2012-01-27 5 views
2

У меня есть зависимость, которая вызывается, когда объект, который я тестирую, создается. Однако после этого его никогда не следует вызывать. Как мне написать такой тест?Rhino Mocks: AssertNotCalled (за исключением случаев, когда я загружаюсь)

Я бы хотел, чтобы эта строка была моей тестовой (так как я пытаюсь следовать стилю AAA). Однако это утверждение не сработает, поскольку во время установки был вызван метод Publish.

Notifier.AssertWasNotCalled(Sub(n) n.Publish(Arg(Of Message).Is.Anything)) 

Есть ли способ «перезагрузить» вызовы зависимости, которую я издевался?

Примечание: я могу настроить его так, что я проверить свойство на Message аргумента для значения я ожидаю после инициализации, но это делает мой тест более хрупким/хрупким, и я хотел бы избежать, если это возможно ,

_notifier.AssertWasNotCalled(
    Sub(n) n.Publish(Arg(Of Message).Matches(Function(m) m.property = "yo!"))) 

ответ

2

Вот как я бы это сделать:

_notifier.AssertWasCalled(function(n) p.Publish, function(c) c.Repeat.Once().IgnoreArguments()); 

Как это будет убедиться, что он вызывается только один раз, который будет вызван ваш код настройки, как вы указали.

+1

Это отлично работает! В моем случае метод вызывается несколько раз (я делаю 'для каждого' над списком, возвращаемым зашитым методом) ... но так как я могу просто выполнить' Repeat.Times (stubbedList.count) 'работает штраф (без магических чисел). Ура! –

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