我的 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。 您在上述方法中发现任何问题吗?...提前致谢
最佳答案
当您使用 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 模拟问题。无法模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12093862/