这困扰了我一段时间了。我将所有验证都放在服务层中。但是当我进行单元测试时,我通常会通过动作方法传递一切然后进入我的服务层包含验证。
所以我现在不确定这是否是最好的方法。因为通常他们说你应该测试那种方法。
那你们觉得怎么样?
答案 0 :(得分:3)
如果您通过操作请求传递了所有内容,那么听起来您正在进行集成测试。
如果你正在做(单位)测试,那么你应该测试单位。在这种情况下,您可以将服务层所需的所有数据传递给(模拟)操作请求。
你应该模拟传递给服务层的对象,传递它,然后根据实际返回的内容断言预期的结果。
修改强>
作为补充,最好是进行端到端或集成测试,因为它证明(进程)有效。
但是,您必须进行单元测试,因为他们将测试各个组件,并且会比端到端测试更快地将缺陷归零。
答案 1 :(得分:1)
如果我是你,我会分别测试服务层 - 其中包含验证---而不是通过操作方法。
这样做的原因是我希望保持我的测试代码“一次进行一次测试”。我对我的控制器进行了测试,专门测试模型和视图的交互,而不是其他东西。我想专门针对服务层和验证进行测试。
当你进行单元测试时,mocks是不可避免的。