我有一个Spring Boot应用程序和服务,其中包含私有DAO字段。私有DAO属性使用@Autowired
注释(没有setter或构造函数设置它,只是注释)。
我试着为服务编写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')
}
}
有什么想法吗?
UPD:我正在测试java代码。
答案 0 :(得分:5)
结果我这样做了:
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可以直接设置私有字段而无需额外的操作。这对我来说是新闻。
答案 1 :(得分:0)