junit5 - 如何使用 JUnit5 在 Micronaut 中的 Controller 测试中模拟服务类?

标签 junit5 micronaut

我正在为我的 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/

相关文章:

java - Junit5 错误。您必须为此 @ParameterizedTest 提供至少一个参数

java - swagger ui 无法通过 micronaut 多模块项目 gradle build 访问

java - Micronaut服务器错误-没有请求状态。原因:java.lang.IllegalArgumentException:没有枚举常量io.micronaut.http.HttpMethod.PRI

hibernate - 如何像在grails中那样使我的h2数据库在micronaut中持久化?

java - 无需使用 easymock 注入(inject)模拟

java - 如何在JUnit 5中实现JUnit 4参数化测试?

java - 如何在 Eclipse 中运行 JUnit 5 测试

java - Micronaut JSON 序列化 - 使用 getter 而不是字段

kotlin - 如何修复应用程序启动时未加载的 micronaut micrometer bean

java - 带有 JUnit 5 的 WELD SE 需要以编程方式启用 bean 发现