2

我在我的 grails 项目中有一个服务类方法,它使用一个帮助类来获取 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。您在上述方法中看到的任何问题?...提前谢谢

4

1 回答 1

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)
}
于 2012-08-23T14:48:25.877 回答