2016-03-16 2 views
0

Мне поручено писать модульные тесты для существующей службы.PageRenderer возвращает нулевой объект во время модульного теста

Служба использует groovyPageRenderer в нескольких местах, но я не могу получить ничего, кроме 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 

Что еще мне не хватает, чтобы получить результат от метода рендеринга?

ответ

1

Вы вводите макет, который является хорошим началом, но вы должны рассказать нам, как вести себя, когда он используется. Прямо сейчас, вы не дали методу визуализации никакого поведения, поэтому он просто возвращает null.

Вы должны установить некоторые взаимодействия в Spock, as explained in the documentation.

Пример кода:

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

Спасибо за ответ, но это не сработало для меня. – Miguel

+0

Я уверен, что этого не произошло, из-за несоответствия в аргументах. Вы читали документацию? –

-1

Я закончил тем, что делал что-то вроде этого, чтобы заставить его работать.

groovyPageRenderer.metaClass.render = {Map param -> return "something"}