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 (将#修改为@)