我有一个服务,它使用jms-grails插件提供的sendJMSMessage方法。 我想写一些单元测试,但我不确定如何“模拟”这个方法,所以它什么都不做。 有什么提示吗?
答案 0 :(得分:2)
您可以对该方法进行metaClass,使其返回您想要的任何内容。
@Test
void pluginCode() {
def myService = new MyService()
def wasCalled = false
myService.metaClass.sendJMSMessage = {String message ->
//I like to have an assert in here to test what's being passed in so I can ensure wiring is correct
wasCalled = true
null //this is what the method will now return
}
def results = myService.myServiceMethodThatCallsPlugin()
assert wasCalled
}
当我从metaClassed方法返回wasCalled
时,我喜欢有一个null
标志,因为我并不特别喜欢断言响应是null
,因为它不是确保您正确连线。如果您在没有wasCalled
标志的情况下返回了一些独特的东西。
在上面的示例中,我使用了1个String参数,但您可以metaClass
输出任何数量/类型的参数以匹配实际发生的情况。