我的grails porject中有一个服务类方法,它使用一个帮助器类来获取响应为xml。然后将xml作为服务类方法的响应发送出去。
服务类: -
class ItemService{
def getItem(Number) {
def HelperClass helper = new HelperClass()
def responseXml = helper.getMessage(Number)
return responseXml
}
}
我为这个方法编写了一个测试用例。在我的测试用例中,我想模仿
def responseXml = helper.getMessage(Number)
我到目前为止写的测试用例是:
class ItemServiceTest extends GroovyTestCase {
public final void testFindItem(){
def service = new ItemService()
def xml = "<Item><Number>123</Number></Item>"
def mockJobServiceFactory = new MockFor(HelperClass)
mockJobServiceFactory.demand.getMessage{ def str ->
return xml
}
service.getItem().HelperClass = mockJobServiceFactory.proxyInstance()
def item = service.getItem()("123")
assertNotNull(item)
}
但是,模拟不会返回我在测试用例中指定的xml。 您在上述方法中遇到的任何问题?...提前谢谢
答案 0 :(得分:2)
使用MockFor
模拟对象时,需要在use
闭包中包围使用模拟的代码。试试这个:
def service = new ItemService()
def xml = "<Item><Number>123</Number></Item>"
def mockJobServiceFactory = new MockFor(HelperClass)
mockJobServiceFactory.demand.getMessage{ def str ->
return xml
}
mockJobServiceFactory.use {
def item = service.getItem()("123")
assertNotNull(item)
}