J'ai travaillé sur un wrapper pour un objet COM qui ne peut prendre et renvoyer que des chaînes. L'interface de l'objet COM ressemble à ceci:Mocking d'un objet COM
interface IMapinfo
{
void Do(string cmd);
string Eval(string cmd);
}
Maintenant, j'ai fait des classes qui enveloppent les fonctions de base comme ceci:
public class Table
{
IMapinfo MI;
public string Name
{
//pass the command to the COM object and get back the name.
get{return MI.Eval("TableInfo(1,1")");}
}
}
Maintenant, je voudrais faire des tests unitaires sur ces classes sans avoir pour créer l'objet COM réel à chaque fois, configurez le monde puis exécutez les tests. J'ai donc cherché à utiliser des objets simulés, mais je suis un peu confus sur la façon dont j'utiliserais moqueur dans cette situation.
Je prévois sur l'utilisation Moq, donc je l'ai écrit ce test comme celui-ci:
[Test]
public void MockMapinfo()
{
Moq.Mock<Table> MockTable = new Moq.Mock<Table>();
MockTable.ExpectGet(n => n.Name)
.Returns("Water_Mains");
Table table = MockTable.Object;
var tablename = table.Name;
Assert.AreEqual("Water_Mains", tablename,string.Format("tablename is {0}",tablename));
Table d = new Table();
}
Est-ce la bonne façon de se moquer de mon objet COM? Comment est-ce que la vérité que la chaîne envoyée à la fonction eval est correcte? ou est-ce que je fais tout faux?
Qu'est-ce qui est à la baisse? –