代码之家  ›  专栏  ›  技术社区  ›  user1028741

莫基托:等打完茬

  •  0
  • user1028741  · 技术社区  · 6 年前

    我正在构建一个spring集成测试。 在这个测试中,我使用mockito如下:

    @MockBean
    A mockA;
    
    public void test(){
        when(mockA.a()).thenReturn(1).thenReturn(2);
        // Do stuff...
    }
    

    现在,在另一个线程上有另一个bean,它经常调用mockA.a()。

    结果是一个竞赛条件,其中 a()将返回1两次。考虑一下,这是非常合理的——另一个bean速度很快,在测试线程到达thenReturn(2)之前成功地调用了a()两次。

    在开始返回值之前,有没有一种很好的方法让Mockito等待存根完成?

    或者其他你能想到的好办法?

    我不想用 睡觉 ,因为它很难看。。。

    编辑: 例如:

    public class B{
        @Autowired
        A a;
    
        @PostConstruct
        public void method(){ // This method will
            System.out.println(a.a());
        }
    }
    
    0 回复  |  直到 6 年前