我知道很多模拟库让程序员检查一个方法只被调用一次。但为什么这有用呢?
另外,为什么验证模拟方法的参数是否有用?
答案 0 :(得分:1)
在进行单元测试时,您正在测试一个独立的方法:所有其他方法都应该正常工作,并且您只测试您的方法是以预期的(指定的......)方式运行。
但在许多情况下,预期的方法意味着调用您依赖的类的方法(通过依赖注入,如果您想进行单元测试)。
由于这些原因,你需要确保这些调用真的已经完成......当然,它们会被预期的参数调用。
示例:
在您的实际应用程序中,您有一个存储库类,用于存储数据库中的所有更改(并且仅执行此操作!)。但是对于单位测试你的业务" class(定义了所有业务规则),你应该模拟那个" repository" class:那么你必须检查这个模拟类是否收到正确的更新数据。
答案 1 :(得分:1)
一般来说,这两个问题的答案都是一样的。
如果您正在测试的单元/方法的要求指定需要该行为,那么它很有用。如果需要这种行为,那么您需要验证的是实际发生的事情。
如果确保只调用一次特定方法很重要,那么就可以这样做。如果多次调用方法无关紧要,则不要明确地测试它。请注意,Mockito“verify”方法的默认值是“times(1)”,这意味着它确认该方法只被调用一次。
关于第二个问题,如果完全有可能使用不同的参数调用方法,并且您不想计算这些参数,则可能需要验证参数,您只关心一组特定的参数值。