Я использую Moq в качестве основы для насмешек. У меня есть ситуация, когда я хочу выполнить два разных метода, которые оба вызывают методы интерфейса. Я хочу убедиться, что оба метода вызывают в моем интерфейсе одни и те же методы, в том же порядке и с одинаковыми параметрами. Для иллюстрации приведем код:
[TestMethod]
public void UnitTest()
{
var classToTest = new ClassToTest();
Mock<IMyInterface> mock1 = new Mock<IMyInterface>();
// Setup the mock
Mock<IMyInterface> mock2 = new Mock<IMyInterface>();
// Setup the mock
classToTest.MethodToTest(mock1.Object);
classToTest.DifferentMethodToTest(mock2.Object);
// here I need help:
mock1.Verify(theSameMethodsAsMock2);
}
Например, если IMyInterface
имеет два метода, Method1(int i)
и Method2(string s)
, тест должен пройти, если MethodToTest
имеет структуру
void MethodToTest(IMyInterface x)
{
x.Method1(42);
x.Method2("example");
x.Method1(0);
}
и DifferentMethodToTest
выглядит так:
void MethodToTest(IMyInterface x)
{
int a = 10 + 32;
x.Method1(a);
string s = "examples";
x.Method2(s.Substring(0, 7));
x.Method1(0);
// might also have some code here that not related to IMyInterface at all,
// e.g. calling methods in other classes and so on
}
Тот же порядок, те же методы, те же параметры. Это возможно с Moq? Или мне нужен еще один насмешливый фреймворк?