4
A
回答
3
像其他的答案说,你为了测试客户端做到这一点,不库(或数据库,或外部服务,或其他),但有两个关键原因为什么我们这样做:
为确保重复性和创建特殊情况下:你希望能够知道你正在测试不随时间消退什么。如果您的存储库正在更改,您无法确定现在有效的功能以前是否有效。此外,您可以确定现在可能未出现在存储库中的异常情况(可能是没有社会安全号码的用户,或类似的模糊但可能的情况),并将其包括在您的测试中,从而确保未来的兼容性。
删除依赖关系:您希望尽可能简化测试。测试所依赖的每个外部资源是定期测试的又一障碍。如果你嘲笑你的仓库,那么即使仓库不存在或缺失,也可以针对你的客户端运行测试。例如,如果一个程序挂接到“真实”数据库,他们的测试套件可能会使用本地(甚至是在内存中)SQLite数据库来测试他们的数据库行为,并且这样运行测试的人不会需要配置或连接到实际的数据库,并且发生的任何更改或错误都不会影响共享数据库资源。
1
您将测试使用该存储库的客户端。
I.E.是使用存储库对已知的一组对象进行正确处理的服务。
1
在这种情况下,一般或嘲讽的时候,你不测试你的存储库,而是测试一个给定的类,你的SUT(System Under Test),正确使用存储库,例如通过调用方法(可能按照正确的顺序)。
嘲笑使用行为验证,而不是状态验证。
这意味着你使用mock来测试你的SUT是否正确运行,而不是在测试用例的末尾有正确的状态。
Jeremy Miller有一些关于此主题的niceblog posts。
相关问题
- 1. 嘲笑框架与功能测试,为什么要嘲笑?
- 2. 使用Unitofwork的仓库嘲笑Lambda
- 3. 用Moq嘲笑仓库的问题
- 4. 犀牛嘲笑为什么我不能嘲笑一个物业?
- 5. 嘲笑是做什么的?
- 6. 为什么我应该嘲笑?
- 7. 犀牛嘲笑:存根&嘲笑。有什么区别
- 8. 为什么我们需要嘲笑框架?
- 9. 嘲笑遗留库
- 10. 为什么用嘲笑DI比嘲笑objective-c中的对象更好?
- 11. 嘲笑还是不嘲笑?
- 12. 嘲笑仓库,然后在Node.js中实现真正的实现
- 13. 单元测试通用仓库与犀牛嘲笑
- 14. 嘲笑不嘲笑以前需要的模块?
- 15. 什么是进口角嘲笑
- 16. 什么是嘲笑方法拦截?
- 17. 最好的嘲笑库
- 18. 嘲笑数据库连接
- 19. 嘲笑Go数据库SDK
- 20. 你最喜欢的Delphi嘲笑库是什么?
- 21. 你最喜欢的Python嘲笑库是什么?
- 22. 我怎么能嘲笑ActivityExecutionContext
- 23. 用犀牛嘲笑嘲笑系列
- 24. 嘲笑HttpPostedFileBase与犀牛嘲笑
- 25. 嘲笑&单元测试 - 为什么要检查一次只被调用一次?
- 26. 使用嘲笑的对象,结果为嘲笑功能
- 27. 如何嘲笑为subprocess.call
- 28. 嘲笑接口为空
- 29. Mokito,嘲笑方法行为
- 30. 作为文件嘲笑stdin
很好的答案,谢谢! – 2012-07-25 15:53:31