我有一个 Spring Boot 应用程序和 Service,其中包含私有(private) DAO 字段。私有(private) DAO 属性用 @Autowired
注释(没有 setter 或构造器设置它,只是注释)。
我尝试为服务编写 Spock 测试,但找不到如何将模拟 DAO 注入(inject) @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')
}
}
有任何想法吗?
更新:我正在测试java代码。
最佳答案
结果我这样做了:
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')
}
}
一点是使用反射。但是 Groovy 可以直接设置私有(private)字段而无需额外的操作。这对我来说是个新闻。
关于spring-boot - 在 Spring Boot 应用程序中将 Autowiring 的对象作为模拟注入(inject)到 spock 测试中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30729408/