测试依赖于另一个服务的 Grails 服务的最佳实践是什么?
默认 mixin TestFor 正确注入(inject)被测服务,例如:
@TestFor(TopService)
class TopServiceTests {
@Test
void testMethod() {
service.method()
}
}
但是如果我的 TopService(服务)实例依赖于另一个服务,比如 InnerService:
class TopService {
def innerService
}
innerService 将不可用,依赖注入(inject)似乎没有填充这个变量。我应该如何进行?
最佳答案
集成测试不应使用 @TestFor
注释,他们应该 extend GroovyTestCase
.测试注解仅用于单元测试(在集成测试中使用时会有不良行为,尤其是 @Mock
注解)。您现在正在看到其中一种不良行为。
如果您延长 GroovyTestCase
然后你就可以拥有
def topService
在测试的顶部,它将注入(inject)所有注入(inject)的依赖项。
对于单元测试用例,您只需在
setUp
中的服务中添加相关服务的新实例。方法。就像:@TestFor(TopService)
class TopServiceTests {
@Before public void setUp() {
service.otherService = new OtherService()
}
...
关于unit-testing - Grails 与多个服务的集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016659/