java - Mockito 在测试中没有模拟来自 Controller 的功能

标签 java testing mockito micronaut

我正在尝试模拟我的 Controller 调用的方法,如下所示:

@Post(value = "/blah", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
    @Transactional
    public HttpResponse<Object> createBlah(HttpHeaders httpHeaders,
            @Body @Valid CreateBlahRequest createBlahRequest) {
        HttpResponse<Object> createBlahResponse;

        (...)
        createBlahService(...) // what i am trying to mock

        return HttpUtils.getResponse(HttpStatus.CREATED, createBlahResponse.body());
    }

在我的测试中,我正在测试如下所示:

    @Mock
    public BlahController blahController;

    public HttpResponse<Object> resp = HttpResponse.created((Object) new AccountResponse()).status(HttpStatus.OK);

    @BeforeAll
    public void configureAppContext() {
        Application.APPLICATION_CONTEXT = applicationContext;
        MockitoAnnotations.initMocks(this);
    }

@Test
    void createBlah(){

        MutableHttpRequest<CreateBlahRequest> request = HttpRequest
                .POST("/blah", createBlahRequest)
                .header("requestId", "1");

        when(blahController.createBlah(eq(request.getHeaders()), eq(createBlahRequest))).thenReturn(resp);

        HttpResponse<CreateBlahRequest> blahRes = client.toBlocking().exchange(request, CreateBlahRequest.class);

    }

但是,当客户端调用 Controller 时,它似乎与我的测试内部的(何时)不匹配,它继续按原样运行。如果有人能就此提出一些建议,我们将不胜感激。

最佳答案

对于看到此内容的任何人,我必须注入(inject)该方法调用的类。 在 Controller 中,它调用另一个服务类,所以我像这样模拟它:

@Inject
public BlahService BlahService;

@MockBean(BlahService.class)
public BlahService blahService(){
    return Mockito.mock(BlahService.class);
}

效果很好。

关于java - Mockito 在测试中没有模拟来自 Controller 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60195744/

相关文章:

java - 无法访问另一个包的类的静态变量

java - CDI Beans 模块部署失败 - 部署 web 应用程序时出现 LifecycleException

html - 如何测试预取/预渲染

c# - 使用抽象测试类来运行单元和集成测试有什么值(value)吗?

.net - 首先在 TeamCity 中运行受代码更改影响的测试

java - 使用mockito调用Service类的嵌套方法时出现NullPointerException

java - mockito:如何在 java 8 中匹配可变参数?

java - 通过xpath获取webelement的文本

java - 如何在Java中访问WADL文件中的方法?

带有 Mockito 的 Android 中的 java.lang.RuntimeException : Stub!