在Spring Boot应用程序中将自动装配的对象作为模拟物注入Spock测试

Vit*_*sok 2 autowired spock spring-boot

我有一个内部带有私有DAO字段的Spring Boot应用程序和服务。专用DAO属性带有注释@Autowired(没有设置者或构造函数设置,仅带有注释)。我试图为服务编写Spock测试,但是找不到如何将模拟DAO注入@Autowired变量。

class TestService extends Specification {
    DAO dao = Mock(DAO)
    Service service = new Service()

    def "test save"() {
        when:
        service.save('data')

        then:
        1 * dao.save('data')
    }
}

Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

UPD:我正在测试Java代码。

Vit*_*sok 6

结果,我这样做了:

class TestService extends Specification {
    DAO dao = Mock(DAO)
    Service service = new Service()

    void setup() {
        service.dao = dao
    }

    def "test save"() {
        when:
        service.save('data')

        then:
        1 * dao.save('data')
   }
}
Run Code Online (Sandbox Code Playgroud)

一点是使用反射。但是Groovy可以直接设置私有字段,而无需其他操作。对我来说这是个新闻。