Есть ли способ указать НИЧЕГО в качестве аргумента для вызова 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);

Ты пытался:

mock.SetReturnValue(true);
mock.Expect("Equals");

Вы можете реализовать новый экземпляр IResolveConstraint, который принимает все и использовать это в качестве параметра в своем тесте. NUnit обрабатывает экземпляры IResolveConstraint иначе, чем любой другой объект, используя Assert.That вместо Assert.AreEqual для проверки его правильности.

Например.

myMock.ExpectAndReturn ("mockedMethod", аргумент1, новый AcceptsAnythingConstraint())

Другие вопросы по тегам