【发布时间】:2017-09-25 03:47:42
【问题描述】:
我在对我的服务进行单元测试时遇到了 nullPointerException,但我不明白为什么?我正在使用 Spring Boot。 这是我提供模板的简单服务。我自动装配了 TemplateEngine 组件。
@Service
public class TicketTemplatingService implements ITemplatingService{
@Autowired
private TemplateEngine templateEngine;
/**
* This method will return a ticket template
*/
@Override
public String buildHtmlTemplating(Object object, String templateName) {
Ticket ticket= (Ticket)object;
//Build the template
Context context = new Context();
context.setVariable("id", ticket.getId());
context.setVariable("date", ticket.getDate());
return templateEngine.process(templateName, context);
}
}
该类的单元测试如下:
@SpringBootTest
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
public class TemplatingServiceTest {
@InjectMocks
private TicketTemplatingService ticketTemplatingService;
@Mock
private TemplateEngine templateEngine;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
}
@Test
public void testHtmlTemplateReturnTheHtmlTemplate(){
Ticket ticket= new Ticket();
ticket.setId(1L);
Date date=new Date();
ticket.setDate(date);
Context context=new Context();
context.setVariable("id", 1L);
context.setVariable("date", date);
//Mock the process method of the templateEngine bean
when(templateEngine.process("TemplateName", refEq(context))).thenReturn("Html template result");
//Now we can test the method
String htmlTemplate=ticketTemplatingService.buildHtmlTemplating(ticket, "TemplateName");
assertThat(htmlTemplate).isEqualTo("Html template result");
}
}
在这个测试类中, templateEngine 变量模拟返回 null,然后我在执行此操作时得到 nullPointerException "when(templateEngine.process("TemplateName", refEq(context))).thenReturn("Html template result"); "
请问您能帮帮我吗?我真的不明白为什么。
【问题讨论】:
标签: unit-testing spring-boot mockito