Есть ли способ указать НИЧЕГО в качестве аргумента для вызова NUnit Mocks Expect?
Я использую макеты NUnit и хотел бы указать, что я ожидаю вызова, но не говоря, что аргументы будут, например:
mock.ExpectAndReturn("Equals", true, ANY_ARGUMENT);
Очевидно, что правильный синтаксис вместо ANY_ARGUMENT.
Есть ли способ сделать это?
Если я не укажу аргументов - NUnit не пройдёт тест, потому что ожидал 0 аргументов, но получил 1.
4 ответа
Глядя на версию 2.5.2 файла nunit.mocks.dll в Reflector, не видно, что есть метод, который делает то, что вы ищете. NUnit является открытым исходным кодом, поэтому один из вариантов - получить код и добавить функцию.
Да, в NUnit Mocks есть такая функция.
Вместо ExpectAndReturn используйте SetReturnValue. Первая функция, как говорят ее имена, указываете входной объект и возвращает объект. Последняя функция просто указывает возвращаемый объект для конкретной функции.
Использование: interfaceMock.SetReturnValue("SomeRetrunFunction", someReturnFunction);
Вы можете реализовать новый экземпляр IResolveConstraint, который принимает все и использовать это в качестве параметра в своем тесте. NUnit обрабатывает экземпляры IResolveConstraint иначе, чем любой другой объект, используя Assert.That вместо Assert.AreEqual для проверки его правильности.
Например.
myMock.ExpectAndReturn ("mockedMethod", аргумент1, новый AcceptsAnythingConstraint())