我正在构建一个弹簧集成测试。 在这个测试中,我使用了像这样的模仿:
@MockBean
A mockA;
public void test(){
when(mockA.a()).thenReturn(1).thenReturn(2);
// Do stuff...
}
现在,在另一个线程上有另一个bean,该bean不断调用嘲笑A.a()。
结果是一个竞争条件,其中有时 a()将返回1两次。考虑一下,这是非常合理的-另一个bean很快,并且在测试线程到达thenReturn(2)之前成功调用了两次a()。
在让Mockito开始返回值之前,有没有一种好方法可以使Mockito等待存根完成?
或者您能想到的任何其他不错的解决方案?
我不想使用 sleep ,因为它很丑...
编辑: 对嘲笑A的调用来自另一个使用“ A” bean的bean。 例如:
public class B{
@Autowired
A a;
@PostConstruct
public void method(){ // This method will
System.out.println(a.a());
}
}