【发布时间】:2018-08-15 17:46:58
【问题描述】:
我在使用 Spy 模拟正在测试的服务中的方法返回值时遇到问题。我收到以下错误消息:
没有指定事务管理器。使用@Transactional 或@Rollback 需要一个有效的配置事务管理器。如果你正在运行 单元测试确保测试已正确配置并且您 运行测试套件而不是单独的测试方法。
这是我的示例代码:
@Transactional
class MyServie {
void methodA(String input1, String input2) {
//Do stuff...
List<String> stringList = [methodB(input1, input2)]
//Do stuff...
}
String methodB(String input1, String input2, boolean input3 = false) {
if (input3) {
return input1
}
return input2
}
}
鉴于上面的代码,我的测试类如下所示:
class MyServiceSpec extends Specification {
def myService = Spy(MyService)
def "methodA test"() {
given:
myService.methodB(_,_,_) >> "TEST"
when:
myService.methodA("TEST", "TEST2")
}
}
我尝试为测试类添加@Transactional 和@Rollback 注释,但仍然收到相同的错误消息。有谁知道如何解决这个问题?提前致谢。
【问题讨论】:
-
看起来你的测试类是一个 DAO。如果它依赖于事务管理器,则需要使用测试实体管理器或其他东西。请尝试发布一段实际代码
标签: unit-testing grails spock