MOQ тестирование возвращаемых типов - PullRequest
1 голос
/ 20 сентября 2010

Учитывая следующее:

var mockIActionService = new Mock<IActionService>();
var mockValidAgeRule = new Mock<ValidAgeRule>(mockIActionService.Object);
mockValidAgeRule.Setup(t => t.Execute(app));

Теперь t.Execute возвращает объект «Правила», как я могу проверить, что что-то было вызвано в Правилах?

Я пытаюсь назвать его таковым mockValidAgeRule.Verify(x => x.Execute(app).Passed)

Я хочу проверить, что объект Result возвратил true с учетом входных данных.

Извините за все вопросы, только у менянебольшая проблема с поиском актуальной и полезной информации о MOQ

Ответы [ 2 ]

0 голосов
/ 09 июня 2015

Я предлагаю добавить объект RulesMock примерно так:

var rulesMock = new Mock<Rules>();
rulesMock.SetUp(x => x.MethodInRules).Return(some_object);

затем добавьте эту макет в ваш код:

var mockIActionService = new Mock<IActionService>();
var mockValidAgeRule = new Mock<ValidAgeRule>(mockIActionService.Object);
mockValidAgeRule.Setup(t => t.Execute(app)).Returns(rulesMock.Object);

так что, если ваш метод получения правил вызывает MethodInRules (), вы можете проверить, вызывается ли это:

rulesMock.Verify(x => x.MethodInRules, Times.Once);

Это идея, надеюсь, это кому-нибудь поможет, удачи!

0 голосов
/ 22 сентября 2010

Ну, как сказал Крис, вы не предоставили достаточно подробностей, чтобы получить правильный ответ.Тем не менее, ИМХО, довольно ясно, что этот тест имеет запах кода.У этого, кажется, нет никаких конкретных реализаций.Тест, полностью состоящий из фиктивных объектов, скорее всего, не проверяет ничего полезного.

Какой класс представляет вашу SUT?Похоже, это может быть ваш объект правил.Если вы предоставите дополнительную информацию о вашей объектной модели и ожидаемом поведении, вам будет проще предоставить отзыв.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...