当我在家发展时,我一直在努力推动自己的心态,以更倾向于 TDD 和一点 DDD。
我不明白的一件事是为什么你要创建一个假的存储库来测试?我并没有真正研究过它,但测试的想法肯定是帮助你的代码解耦(给你更多的灵活性),减少所需的代码并减少错误的数量。
那么有人可以填补我愚蠢的大脑为什么有些人喜欢测试假存储库吗?我会认为针对真实数据库进行测试是比创建虚假数据库更好的替代方法,因为这样您就知道它适用于您的真实世界数据存储。
当我在家发展时,我一直在努力推动自己的心态,以更倾向于 TDD 和一点 DDD。
我不明白的一件事是为什么你要创建一个假的存储库来测试?我并没有真正研究过它,但测试的想法肯定是帮助你的代码解耦(给你更多的灵活性),减少所需的代码并减少错误的数量。
那么有人可以填补我愚蠢的大脑为什么有些人喜欢测试假存储库吗?我会认为针对真实数据库进行测试是比创建虚假数据库更好的替代方法,因为这样您就知道它适用于您的真实世界数据存储。
伪造的存储库允许您仅测试您的应用程序代码。
假存储库意味着自动化测试可以轻松地在存储库中设置已知状态。
假存储库将比真实数据库快几个数量级。
假存储库不能替代将包括您的数据库的系统测试。
在我看来,您测试伪造资源有两个非常重要的原因:
唯一的缺点是显而易见的:
...这就是集成测试的目的。
我赞成 Giraffe 的回答,但只想补充几点:
每个开发人员都可以使用模拟/假存储库进行她/他自己的单元测试,而不会干扰其他开发人员在同一项目中所做的测试。
使用本地模拟/伪造存储库增强了数据抽象层的用户,这是一种良好的设计实践。
例如,我使用了像 a 这样简单的东西HashMap
来实现数据访问层的模拟。这使得每个单元测试都非常容易确保其目的所必需的条件准确存在,并验证在数据访问层上进行了正确的调用。