Макет метода с параметрами - PullRequest
4 голосов
/ 29 марта 2012

Я ввожу зависимость CheckCompatibRepository.Я издеваюсь над методом IsCompatible, который имеет список в качестве третьего параметра.

 var mockRepositoryCheckCompatib = new Mock<ICheckCompatibilityActDoer>();
            mockRepositoryCheckCompatib.Setup(c => c.IsCompatible(doer, activity, listActivitiesPreDispatched)).Returns(true);

Проблема в списке.Это заполнено классом, который я проверяю.Честно говоря, мне плевать на этот параметр, я хочу издеваться над IsCompatible, игнорируя этот параметр.Это возможно?

В противном случае насмешка просто не отловит вызовы метода.Чтобы упростить ситуацию, я попытался отправить список в виде введенной зависимости в моем классе.Это работает до тех пор, пока список не начнет заполняться, тогда макет перестанет перехватывать вызовы.

Как бы вы это высмеяли?

1 Ответ

11 голосов
/ 29 марта 2012

Поскольку вы используете Moq , вы ищете метод It.IsAny<T>.Так как вы изменяете значения списка, передача его экземпляру объекта - неправильный путь, так как вам придется постоянно настраивать Mock для обработки нового параметра.макет, чтобы принять любое значение параметра типа List<T>.В этом примере мы будем использовать List<int>.

 var mockRepositoryCheckCompatib = new Mock<ICheckCompatibilityActDoer>();
 mockRepositoryCheckCompatib.Setup(c => c.IsCompatible(doer, activity, It.IsAny<List<int>>())).Returns(true);

Edit: я не видел комментарий bzlm от предыдущего, который по существу отвечает на вопросПожалуйста, примите его ответ, если он отправит один, я не хотел его переманивать.

...