验证模拟是最佳做法吗? (行为验证)

问题描述 投票:1回答:1

根据我所看到的,有两种验证测试的方法。

首先是状态验证,在这里我可以断言某些==某些东西。 然后是行为验证,在这里我可以检查模拟中的方法是否被称为X次。

在我看来,我想测试一个接口,而不关心方法是如何执行或实现的。 我关心方法的结果或结果。 根据我的经验,检查是否在模拟程序上调用了一个方法,这会使我的代码变得脆弱。

因此,将模拟上的验证方法称为最佳实践(或行为验证)吗?

mocking tdd
1个回答
2
投票

并非所有测试都是一样的。

许多对象无法进行行为测试,因为被测系统未与协作者进行交互,只有结果验证才有意义。

其他人无法通过结果进行测试,因为被测系统不返回结果或没有副作用。

例如,如果您需要验证被测系统是否向外部系统发送了消息,则只能将该外部系统表示为模拟,而您要验证的方面是被测系统向外部调出系统。

我要修改这一声明说,你很可能在已经调用的外部API比你在什么被发送的事实不感兴趣。 您仍然使用该模拟程序,而不是仅验证一次方法被调用,而是验证传递给该方法的参数是否符合预期。

换句话说,验证行为有时是进入系统的唯一窗口,可用于验证状态。

© www.soinside.com 2019 - 2024. All rights reserved.