涉及外部依赖的复杂方法的测试驱动开发

时间:2010-03-17 06:55:09

标签: tdd

我正在为WCF服务实施服务合同。

根据TDD,我写了一个测试用例,只是使用硬编码值传递它。

之后我开始将真正的逻辑放入我的Service实现中。实际逻辑依赖于3-4外部服务和数据库。

我应该对我写的原始测试用例做些什么? 如果为了使测试通过而保持相同,则必须调用其他几个外部服务。

所以我总体上有一个问题,如果我首先使用TDD为Business Facade编写测试用例,以及稍后当我添加实际逻辑时,如果它涉及外部依赖,我该怎么办。

1 个答案:

答案 0 :(得分:1)

利用模拟框架(具有依赖性反转或仅仅是工厂),因此您可以将伪依赖注入对象。然后,这些可以返回预设的响应和/或检查该类是否使用了您想要的依赖关系。

例如,如果您的代码调用存储库进行保存,那么我们并不关心存储库实际保存到持久性存储的业务方法测试,只是它被调用并在需要时返回一些数据。你真正测试的是你的代码如何对依赖返回的内容作出反应,或者它是否被正确使用 - 而不是依赖的实际功能

理想情况下,第一个测试应该代表类/方法的工作方式和返回数据,因此一旦完成测试仍然有效。