gpt4 book ai didi

unit-testing - Groovy-grails模拟问题。无法 mock

转载 作者:行者123 更新时间:2023-12-02 14:03:24 24 4
gpt4 key购买 nike

我的grails porject中有一个服务类方法,该方法使用助手类将响应作为xml获取。然后,将xml作为服务类方法的响应发送出去。

服务等级:

class ItemService{
def getItem(Number) {
def HelperClass helper = new HelperClass()
def responseXml = helper.getMessage(Number)
return responseXml
}
}

我为此方法编写了一个测试用例。在我的测试案例中,我想 mock
    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。
您在上述方法中看到任何问题吗?...提前谢谢

最佳答案

当使用 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)
}

关于unit-testing - Groovy-grails模拟问题。无法 mock ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12093862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com