unit-testing - 模拟 domainInstance.validate() 的返回值

标签 unit-testing grails mocking spock

我正在写 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/

相关文章:

css - 使用 Grails 资源插件 1.2.7 破坏的 CSS 文件中的 URL

jquery - 后退按钮可移动数据表的第n页

grails - 在学习 grails 之前,我必须先了解 groovy 吗?

testing - spring 尝试在 Mocked 实例中注入(inject) @Autowired 依赖项

asp.net-mvc - 如何将存储库注入(inject) wcf 服务?

c++ - googlemock 可以从同一类的其他方法调用中模拟方法调用吗?

java - 每个案例一个单元或每个断言一个单元

c# - 如何验证使用正确表达式调用的模拟异步方法?

java - BDDMockito 调用真正的静态模拟方法

go - 你如何在 GoLang 的模拟中模拟错误返回值?