使用PowerMockito对方法进行两次存根,以便每次都返回不同的值

时间:2018-10-30 04:50:04

标签: java unit-testing junit stub powermockito

我在类underTest中有一个方法BeingTested,正在为此进行单元测试。该方法对私有方法calledTwice进行了两次调用,该私有方法返回一个Document。我需要对calledTwice进行存根处理,以便它在每次调用时返回一个不同的Document(第一个调用doc1,第二个调用doc2)。 calledTwice接受类AnotherClass的实例作为参数,并且在两次调用underTest之间对该类的实例进行了更改。 这是我尝试执行的操作:

Class BeingTested{
    public void underTest{
        /*some code*/
        Document doc = calledTwice(AnotherClass o);
        /*some code, with changes made to o*/
        doc = calledTwice(AnotherClass o);
        /*some code*/
    }
} 

@RunWith(PowerMockRunner.class)
@PrepareForTest(BeingTested.class)
class TestClass{
    @InjectMocks
    BeingTested beingTested;

    public void testMethod(){
        Document doc1 = new Document().append("someField", "someValue");
        Document doc2 = new Document().append("error", "Error");
        /*some code*/
        PowerMockito.when(beingTested, "calledTwice").thenReturn(doc1).thenReturn(doc2);
        /*some code*/
    }
}

它不起作用,因为它实际上被称为calledTwice。有关如何执行此操作的任何想法?

1 个答案:

答案 0 :(得分:0)

使用Mockito代替

 Mockito.when(beingTested, "calledTwice").thenReturn(doc1).thenReturn(doc2);