我正在为我的 micronaut 应用程序中的 Controller 编写一个 JUnit
测试用例。 Controller 有一个 GET 端点,它调用我的服务类中的方法。我收到 NullPointerException ,所以我假设我的服务类可能没有被正确模拟,但是我不确定。我正在使用 @Mock
(Mockito) 来提供服务。
我是否使用了正确的注释来模拟服务层?我尝试在谷歌上搜索,但它并没有给我太多值得研究的东西。谢谢。
@MicronautTest
public class FPlanControllerTest {
private static final String url = "dummy_url";
@Inject
FPlanService fplanService;
@Inject
@Client("/")
RxHttpClient client;
@Test
public void testGetLayout() {
FPlanUrl expectedFPlanUrl = new FPlanUrl(url);
when(fplanService.getLayoutUrl(Mockito.anyString(), Mockito.anyString()))
.thenReturn(expectedFPlanUrl);
FPlanUrl actualFPlanUrl = client.toBlocking()
.retrieve(HttpRequest.GET("/layout/1000545").header("layoutId", "7"), FPlanUrl.class);
assertEquals(expectedFPlanUrl , actualFPlanUrl);
}
@MockBean(FPlanService.class)
FPlanService fplanService() {
return mock(FPlanService.class);
}
}
我收到以下错误。
java.lang.NullPointerException at com.apartment.controller.FPlanControllerTest.testGetLayout(FPlanControllerTest.java:44)
最佳答案
使用@MockBean(io.micronaut.test.annotation.MockBean)。
文档 - https://micronaut-projects.github.io/micronaut-test/latest/guide/#junit5
关于junit5 - 如何使用 JUnit5 在 Micronaut 中的 Controller 测试中模拟服务类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56448496/