我的任务是为现有服务编写单元测试。
该服务在多个地方使用groovyPageRenderer,但我无法从render方法中获取除null之外的任何内容。
reportXml = groovyPageRenderer.render(template: templateName, model: [summary:result?.summaryData,reportDate: reportDate ])
pdfRenderingService.render([document: XMLResource.load(new InputSource(new StringReader(reportXml))).document])
Caused by: java.lang.NullPointerException
at java.io.StringReader.<init>(StringReader.java:50)
我知道代码有效,所以在配置单元测试时我必须做错事。我这样做是为了将它注入服务中。
def groovyPageRenderer
groovyPageRenderer = Mock(PageRenderer)
service.groovyPageRenderer = groovyPageRenderer
为了从渲染方法中获取结果,我还缺少什么?
答案 0 :(得分:1)
你正在注入模拟,这是一个好的开始,但是你必须告诉模拟在使用时如何表现。现在,你还没有给出任何行为的渲染方法,所以它只是返回null
。
您必须在Spock中设置一些互动,as explained in the documentation。
示例代码:
groovyPageRenderer.render(_) >> "<some>xml</some>"
答案 1 :(得分:-1)
我最终做了这样的事情以使其发挥作用。
groovyPageRenderer.metaClass.render = {Map param -> return "something"}