moq を使用した単体テストを行うのに少し問題があります。
次のような関数がある場合:
public string GetName(IMapinfoWrapper wrapper)
{
return wrapper.Evaluate("My com command");
///"My comm command" is the same all the time.
}
次に、GetName 関数の戻り値をチェックするテストがあります。
[Test]
public void Test()
{
Mock<IMapinfoWrapper> mock = new Mock<IMapinfoWrapper>();
mock.Expect(mapinfo => mapinfo.Evaluate(It.IsAny<String>()))
.Returns("TableName");
Assert.AreEqual("TableName", GetName(mock.object));
}
したがって、私の質問は、モックを次のように定義する必要があることです。
mock.Expect(mapinfo => mapinfo.Evaluate(It.IsAny<String>()))
.Returns("TableName");
またはこのように:
mock.Expect(mapinfo => mapinfo.Evaluate("My com command")
.Returns("TableName");
2 番目の方法を使用することに関する私の唯一の問題は、メソッド GetName の実装を結び付けて、常に "My com command" 文字列を内部的に使用しているように感じることです。
これは私がやるべきことですか、それとも私はこれをすべて間違っていますか?
単体テストとモックを始めたばかりなので、すべてをどのように連携させるべきかまだわかりません。