2017-01-05 1 views
0

Я использую Rhino Mocks для установки строгих издевательств. При определенных условиях никакие вызовы методов не могут выполняться ни одним из этих издевательств.Мой носорог издевается над строгими исключениями ожидания ожидания при запуске в процессе выполнения. Как решить?

// Arrange 
var myMock = MockRepository.GenerateStrictMock<IMyClass>(); 
var sut = new SUT(myMock); 

// Act 
sut.DoSomething(); 

Теперь DoSomething оборачивает все в примерки уловом:

public void DoSomething() 
{ 
    try { 
     m_Class.Something(); 
    } 
    catch { 
    } 
} 

Это заставляет expectationexception строгого издеваться, чтобы быть пойманным. Мой тест проходит, пока он не должен.

Я бы надеялся, что вызов myMock.VerifyAllExpectations(); приведет к ошибке, но это тоже не так.

Как я могу достичь этого результата?

ответ

1

Наличие блокировки, которая ест исключение, обычно является плохой практикой. Если вы не в состоянии изменить, что, тем не менее, вы можете использовать сделать более явным утверждают на членах с использованием .AssertWasCalled() и .AssertWasNotCalled(), как это:

myMock.AssertWasNotCalled(x => x.Something())

Но это потребует создание утверждения для всех возможного член интерфейса, если вы хотите проверить, что ничего не было вызвано, что было бы утомительным и подверженным будущим членам, которые были упущены.

К сожалению, использование исключений для утверждений является основополагающим принципом для RhinoMocks (и большинства модулей модульного тестирования, таких как NUnit, Moq, NSubstitute и т. Д.), Поэтому перехват этих исключений, прежде чем они будут распространяться на платформу тестирования, будет проблемой вообще ,

+0

Я согласен и переместил try-catch из класса, прежде чем задал этот вопрос. Коллега не согласился с этим движением, следовательно, вопрос. Я чувствую себя уверенным, что этот ход имеет смысл для большего количества людей, чем для меня. – Diana

Смежные вопросы