问题描述
我正在使用 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 (将#修改为@)