测试假存储库有什么意义?

Joh*_*hn_ 9 tdd repository fake-repositories

我一直试图在家里开发时更加注重TDD和DDD.

但我不明白的一件事是你为什么要创建一个假的存储库来测试?我还没有真正研究过它,但是测试的想法肯定是为了帮助解耦你的代码(提供更多的灵活性),减少所需的代码并减少错误的数量.

那么有人可以填写我的愚蠢大脑,为什么有些人喜欢测试假存储库?我认为对真实数据库进行测试是创建假数据库的一个更好的选择,因为那时你知道它对你的真实世界数据存储有效.

Gir*_*ffe 21

虚拟存储库允许您仅测试应用程序代码.

假存储库意味着自动化测试可以轻松地在存储库中设置已知状态.

假存储库将比真实数据库快几个数量级.

虚假存储库不能替代包含数据库的系统测试.


Spo*_*ike 7

我认为有两个非常重要的原因可以帮助您测试伪造的资源:

  • 当您对慢速I/O或数据库进行模拟时,它可以使单元测试更快.如果您有一个小型测试套件,这可能看起来不像什么,但是当您进行+500单元测试时,它开始有所作为.在这样的数量下,针对数据库运行的测试将开始需要几秒钟的时间.程序员很懒,想让事情变得更快,所以如果运行测试套件需要10秒以上,那么你将不再乐意做TDD了.
  • 它强制您考虑代码设计以使更改更容易.如果您已经针对接口或抽象类进行了实现,那么通过契约和依赖注入进行设计也变得更加容易.如果做得好,这样的设计可以更容易地遵守代码中的更改.

唯一的缺点是显而易见的:

  • 你怎么能确定它真的有效?

......这就是整合测试的目的.