2

我有一个在创建我正在测试的对象时被调用的依赖项。但是,在此之后永远不应调用它。我将如何编写这样的测试?

我想把这条线作为我的测试(因为我试图遵循 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!")))
4

1 回答 1

2

这是我的做法:

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

因为这将确保它只被调用一次,这将由您的设置代码触发,如您所指示的。

于 2012-01-27T21:49:54.933 回答