wiremock - 有没有办法在编写组件测试用例时模拟内部服务调用

我正在为我的存储库编写组件级测试用例。我的 API 在内部调用了我需要模拟的第三方 API。我无法直接访问该 API,也无法直接调用它,需要从 API 调用中调用它。我需要模拟才能成功运行组件测试用例。我试过 wiremock 但看起来它不起作用,我的 API 仍在调用第 3 方 URL。有什么办法可以解决这个问题。这是我的代码 -

类级别的注释

@Rule
    public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8888));

    WireMockServer wm;

启动服务器

@BeforeEach
    void setUp() {
        wm = new WireMockServer(WireMockConfiguration.options().port(8888));
        wm.start();
    }

在测试中。

wireMockServer.start();
        wm.stubFor(get("https://someurl")
                .willReturn(badRequest()
                        .withHeader("Content-Type", "application/json")
                        .withBody("<response>SUCCESS</response>")));


MvcResult mvcResult = this.mockMvc.perform(MockMvcRequestBuilders
                .post(apiContextPath)
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON)
                .content(gson.toJson(offerParams)))
                .andExpect(status().isOk()).andReturn();

wireMockServer.stop();

抱歉,由于安全原因,无法粘贴整个代码。

回答1

看起来您正在尝试将 JUnit 4 规则与 JUnit 5 一起使用,这意味着不会启动 WireMock 服务器。

改用 JUnit Jupiter 扩展:https://wiremock.org/docs/junit-jupiter/

相似文章

随机推荐

最新文章