Как я могу пройти модульный тест сразу после вызова ожидаемого метода для макетного объекта?
При работе с носорогом.Издевается с макетом предмета в руке:
Есть ли способ пройти модульный тест после вызова ожидаемого метода без выполнения строк после вызова этого ожидаемого метода?
Спасибо
2 ответа:
Начиная с RhinoMocks 3.5 вы можете использовать nice
AssertWasCalled()
this.Service.BuldMessage("messageId"); this.Service.AssertWasCalled(x => x.GenerateMessage("messageId"), messageId));
EDIT: ответ на комментарий
RhinoMock не отвечает за изменение потока выполнения теста, поэтому вы должны использовать NUnit asserts, утверждайте.Утилита Pass() позволяет сразу завершить тест, записав его как успешный:
if (this.Service.AssertWasCalled(...))) { Assert.Pass("well done"); }
PS: как предлагали другие, рассмотрим редизайн юнит-теста, который заставил вам делать такой условный тестовый выход.
Вы можете использовать
AssertWasCalled()
в Rhino.ИздеваетсяВаше ожидание, что тест должен остановиться, если метод вызван и не должен выполнять следующие строки, означает, что вы написали тест неправильно. Используйте assert (Nunit или как-то иначе) в качестве последней строки теста и разделите тест. Вы, вероятно, тестируете две вещи, и это не юнит-тестирование. В тестах нет такого разветвленного потока. Все строки в тестах должны быть выполнены. И в идеале, каждый тест должен иметь только один утверждать.
С тем видом потока, который вы ожидаете, вы теряете обратную связь, которую вы получаете от тестов, когда они терпят неудачу, а также. Вы не знаете, просто взглянув на название теста, что провалилось.