2016-03-16 81 views
0

我的任務是爲現有服務編寫單元測試。PageRenderer在單元測試期間返回空對象

該服務在多個位置使用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 

我還想知道爲了從render方法中獲得結果還有什麼?

回答

1

你正在注入模擬,這是一個好的開始,但你必須告訴模擬如何使用它時的行爲。現在,你還沒有給出渲染方法的任何行爲,所以它只是返回null

你必須在Spock中設置一些交互,as explained in the documentation

示例代碼:

groovyPageRenderer.render(_) >> "<some>xml</some>" 
+0

感謝您的回覆,但這並不適用於我。 – Miguel

+0

我很確定它沒有,因爲參數不匹配。您是否閱讀過文檔? –

-1

最後我做這樣的事情,使其工作。

groovyPageRenderer.metaClass.render = {Map param -> return "something"} 
相關問題