У меня есть быстрый вопрос, который я не смог выяснить в документации по NMock 2.0.
У меня есть функция Save (), которую я хочу смоделировать. Принимает идентификатор строки в качестве параметра и десятичный в качестве значения.
Я знаю, что могу написать это, чтобы убедиться, что Save () вызывается с двумя конкретными значениями:
Expect.Once.On(dao) _
.Method("Save").With(New Object() {"foo", 1})
Но это проходит, только если "foo" и 1 переданы. У меня есть контроль над значением "foo", но для второго значения я не знаю, что это будет; или мне не важно проверять, какое значение будет иметь хотя бы этот конкретный тест.
Я знаю, что могу написать:
Expect.Once.On(dao) _
.Method("Save").WithAnyArguments()
Но это позволит мне передать любые аргументы; так что если интерфейс Сохранить изменится и позже примет 5 параметров, мой тест все равно пройдет.
Как я могу убедиться, что он принимает только 2 параметра с их соответствующими типами?
Возможно, еще важнее - слишком ли хрупко писать подобный модульный тест? Может быть, я должен написать код, чтобы ожидать каких-либо параметров, чтобы каждый раз, когда я выполнял рефакторинг, мне не приходилось возвращаться и менять эту строку? Я обнаружил, что мои тестовые сценарии, в которых используется множество макетов, очень хрупкие, и каждый раз, когда я выполняю рефакторинг, мне приходится их менять ... Может быть, я здесь неправильно использую макеты? Все еще довольно плохо знакомы с этим, поэтому любые советы очень ценятся.