Есть ли способ указать НИЧЕГО в качестве аргумента для вызова NUnit Mocks Expect? - PullRequest
5 голосов
/ 26 августа 2009

Я использую макеты NUnit и хотел бы указать, что я ожидаю вызова, но, не говоря, какими будут аргументы, например:

mock.ExpectAndReturn("Equals", true, ANY_ARGUMENT);

Очевидно, что вводится правильный синтаксис вместо ANY_ARGUMENT.

Есть ли способ сделать это?

Если я не укажу аргументов - NUnit не пройдёт тест, потому что ожидал 0 аргументов, но получил 1.

Ответы [ 4 ]

2 голосов
/ 19 января 2011

Да, в NUnit Mocks есть такая функция.

Вместо ExpectAndReturn используйте SetReturnValue. Первая функция, как видно из ее названий, определяет входной объект и возвращает объект. Последняя функция просто указывает возвращаемый объект для конкретной функции.

Использование: interfaceMock.SetReturnValue("SomeRetrunFunction", someReturnFunction);

2 голосов
/ 28 августа 2009

Глядя на версию 2.5.2 файла nunit.mocks.dll в Reflector, не видно, что есть метод, который делает то, что вы ищете. NUnit с открытым исходным кодом, поэтому один из вариантов - получить код и добавить функцию.

1 голос
/ 16 декабря 2010

Вы пробовали:

mock.SetReturnValue(true);
mock.Expect("Equals");
0 голосов
/ 22 июня 2010

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

Например.

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

...