使用Grails版本2.4.2
我有成功通过的控制器单元测试。 一旦我添加了测试MyService的MyServiceSpec,一些控制器单元测试开始失败。 如果我注释掉我的MyServiceSpec测试,他们会再次通过。 我已经能够将其缩小到与MimeType bean初始化相关的东西。
如果运行MyServiceSpec,则使用
打印MimeTypeMimeType.getConfiguredMimeTypes().each { MimeType mt ->
println mt.name
}
输出
text/html
没有MyServiceSpec,它就是
application/atom+xml
text/css
text/csv
application/x-www-form-urlencoded
text/html
application/xhtml+xml
text/javascript
application/json
text/json
multipart/form-data
application/rss+xml
text/plain
application/hal+json
application/hal+xml
text/xml
application/xml
如果没有json mime类型,则无法正确呈现响应并且测试失败。我没有看到关于允许或禁止服务类的单元测试的任何详细文档。
进行服务级别单元测试是否不正确?它应该转移到集成测试区吗?相关问题是为什么在引入服务单元测试时,其他控制器测试的默认MimeType配置会被清除?
答案 0 :(得分:0)
您需要以这种方式定义单元测试......
@Mock(MyService)
class MyControllerTests{
@Before
void setUp() {
service = mockFor(MyService).createMock()
}
@Test
void test() {
controller.myService = service
mockFor(MyService).createMock()将创建模拟对象的实际实例,这将传递给控制器 MyService 属性。
希望这会有所帮助。感谢。