我正在写 spock测试 Controller 方法的单元测试。
被测 Controller 操作实例化一个新的域实例对象,并
在保存之前调用 validate 。
有没有 mock 对 domainInstance.validate() 的调用所以我
可以让它返回我想要的任何东西吗?还是我必须隐藏这个
实现这一点的服务方法背后的实例化和保存?
我这样做是因为在单元测试的上下文中
Controller ,不应涉及域对象的约束。
我在其他地方进行了测试(显然是在 MyDomainClassTests 中)。如果我
想将这些考虑在内 我的测试将是一个集成
测试。
最佳答案
如果您没有将验证放在域实例本身上,而是放在服务中,
你可以让你的 Controller 在它的构造函数(或者更确切地说是一个服务的接口(interface))中接受一个服务。让该服务处理验证。
现在,对于该 Controller 的单元测试,您可以将该接口(interface)(服务)的 Mock 传递给 Controller ,并将该模拟配置为返回您想要的任何内容。
对于 .net,我可以推荐最小起订量 (http://code.google.com/p/moq/)
关于unit-testing - 模拟 domainInstance.validate() 的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4724107/