微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MockRestServiceServer 看到来自先前测试的请求

如何解决MockRestServiceServer 看到来自先前测试的请求

我正在使用 MockRestServiceServer 运行 junit5,并且看到当我使用异步请求运行多个测试时,测试 A 中的 MockRestServiceServer 将看到来自测试 B 的请求并标记为意外。

@SpringBoottest(webEnvironment = WebEnvironment.MOCK)
public class MyTestClass {

  @Autowired
  private RestTemplate restTemplate;
  @Autowired
  private WebApplicationContext wac;

  private MockRestServiceServer mockServer;
  private mockmvc mockmvc;

  private URI asyncUri = URI.create("/asyncUrl");

  @BeforeEach
  public void setUp(){
    mockerServer = MockRestServiceServer.bindTo(restTemplate).ignoreExpectOrder(true).build();
    mockmvc = mockmvcBuilders.webAppContextSetup(this.wac).build();
  }

  @AfterEach
  public void tearDown(){
    mockServer.verify();
    mockServer.reset();
  }

  @Test
  public void dontRunAsyncmethod(){
    mockServer.reset(); // Added trying to fix the issue
    mockServer.expect(ExpectedCount.never(),requestTo(asyncUri));

    URI uri = URI.create("/myApi?runAsyncmethod=false");
    mockmvc.perform(get(uri));
  }

  @Test
  public void doRunAsyncmethod(){
    mockServer.reset(); // Added trying to fix the issue

    // Side issue here - I have to use `between` rather than `times`
    // because mockServer validates before request happens
    mockServer.expect(ExpectedCount.between(0,1),requestTo(asyncUri));

    URI uri = URI.create("/myApi?runAsyncmethod=true");
    mockmvc.perform(get(uri));
  }
}

单独运行时,两个测试都通过。但是,当我将它们一起运行时,dontRunAsyncmethod 将失败,表示预计没有请求 /asyncUrl。有没有办法将测试分开?我能否以某种方式确保在开始下一个测试之前所有请求都已完成?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。