unit-testing - Grails 与多个服务的集成测试

标签 unit-testing grails integration-testing grails-2.0

测试依赖于另一个服务的 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/

相关文章:

java - Spring Boot 在测试时模拟其他休息客户端

grails - 如何在createCriteria中修剪属性

grails - 如何在G-WAN上部署Grails应用

java - 具有代码覆盖率的 REST API 集成测试

java - 使用 JUnit 运行大量集成测试的更好方法是什么?

java - 带有 get() 和 requestBody 的 WebTestClient 不可用

c# - 对具有不同参数的相同方法调用的最小起订量期望

docker - dotnet 测试未在 docker 中使用标志 --no-build 运行

javascript - Chutzpah 异常且不刷新测试列表

eclipse - 如何让GGTS/STS超快?