У меня проблемы с выполнением модульного тестирования с использованием 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");
Моя единственная проблема с использованием второго способа заключается в том, что я чувствую, что связываю реализацию метода GetName, чтобы всегда использовать строку «Моя команда com» внутри.
Это то, что я должен делать, или я все делаю неправильно?
Я только начал проводить юнит-тестирование и издевательство, поэтому я до сих пор не уверен, как все должно сочетаться.