如何在单元测试下的 Grails 服务中为字段注入模拟(使用自动装配)?

How to inject a mock for a field (using autowired) in a Grails service that is under unit test?

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

class AcmeService {

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

FooService 不是 Grails 服务,而是来自 FeignClient 的动态实现。我正在寻找一种在 UnitTest 中为 FooService 服务注入 Mock 的方法。执行此操作的最佳解决方案是什么?

我尝试在设置中设置依赖项,但后来我得到了 'Unsatisfied dependency expressed through field fooService'

class AcmeService extends Specification {

    FooService mockedFooService = Mock(FooService)

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

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

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