grails - 如何在单元测试下的 Grails 服务中注入(inject)字段的模拟(使用 Autowiring )?

标签 grails spock grails3.2.0

在我当前的设置中,我想对具有 @autowired 依赖项的 Grails 服务进行单元测试,并为依赖项注入(inject)模拟。

class AcmeService {

    @Autowired
    FooService fooService // not a Grails service!
}

FooService 不是 Grails 服务,而是 FeignClient 的动态实现。我正在寻找一种在 UnitTest 中为 FooService 服务注入(inject) Mock 的方法。做到这一点的最佳解决方案是什么?

我尝试在设置中设置依赖项,但随后我得到“通过字段 fooService 表达的不满足的依赖项”

class AcmeService extends Specification {

    FooService mockedFooService = Mock(FooService)

    def setup() {
        service.fooService = mockedFooService
    }
}

最佳答案

您可以将以下内容添加到单元测试中:

def doWithSpring = {
    fooService( InstanceFactoryBean, Mock(FooService) )
}

关于grails - 如何在单元测试下的 Grails 服务中注入(inject)字段的模拟(使用 Autowiring )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41237915/

相关文章:

gradle - 将Gradle 3升级到Gradle 4后“unable to resolve class”错误

grails - 如何在 session 中存储 quartz 作业的结果?

grails - 如何在grails 3中配置quartz插件?

grails - 从Grails中的 Controller 渲染JSON View

groovy - Spock 框架每个 'then' block 只允许一个异常条件

grails - Grails 3.2-对象版本不会更新

grails - 使用对象列表进行Grails自定义验证

grails - 如何在activiti中获取枚举值以及activiti中FormProperty的getType()的返回类型是什么?

spring - 如何使用Spring Boot和Spock运行测试容器

Grails Spock集成测试redirectedUrl在localhost test-app和构建服务器test-app之间不同