Дважды заглушаем метод с помощью PowerMockito, чтобы каждый раз возвращать разные значения - PullRequest
0 голосов
/ 30 октября 2018

У меня есть метод underTest в классе BeingTested, для которого я делаю юнит-тесты. У метода есть два вызова закрытого метода calledTwice, который возвращает Document. Мне нужно заглушить calledTwice, чтобы он возвращал разные документы при каждом вызове (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 голосов
/ 30 октября 2018

Используйте вместо этого Mockito

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