私は、文字列のみを取得して返すことができるCOMオブジェクトのラッパーに取り組んできました。COMオブジェクトのインターフェイスは次のようになります。
interface IMapinfo
{
void Do(string cmd);
string Eval(string cmd);
}
これで、次のような基本的な機能をまとめたクラスを作成しました。
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")");}
}
}
ここで、毎回実際のCOMオブジェクトを作成せずに、これらのクラスの単体テストを実行し、ワールドを設定してからテストを実行したいと思います。そのため、モックオブジェクトの使用を検討してきましたが、この状況でモックをどのように使用するかについて少し混乱しています。
私はMoqの使用を計画しているので、このテストを次のように作成しました。
[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();
}
これは私のCOMオブジェクトをモックする正しい方法ですか?eval関数に送信される文字列のこの真実性はどのように正しいのでしょうか?または私はそれをすべて間違っていますか?