Как проверить, был ли метод вызван из другого с тем же классом по mockito - PullRequest
37 голосов
/ 06 января 2012

Я хочу протестировать некоторые методы, которые вызывают другие в том же классе. Это в основном одни и те же методы, но с разным количеством аргументов, поскольку в базе данных есть некоторые значения по умолчанию. Я показываю на этом

public class A{
    Integer quantity;
    Integer price;        

    A(Integer q, Integer v){
        this quantity = q;
        this.price = p;
    }

    public Float getPriceForOne(){
        return price/quantity;
    }

    public Float getPrice(int quantity){
        return getPriceForOne()*quantity;
    }
}

Поэтому я хочу проверить, вызывался ли метод getPriceForOne () при вызове метода getPrice (int). По сути, вызывайте getPrice (int) как обычно и фиктивно getPriceForOne.

import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
....

public class MyTests {
    A mockedA = createMockA();

    @Test
    public void getPriceTest(){
        A a = new A(3,15);
        ... test logic of method without mock ...

        mockedA.getPrice(2);
        verify(mockedA, times(1)).getPriceForOne();
    }
}

Пожалуйста, имейте в виду, что у меня есть намного более сложный файл, который является утилитой для других, и все они должны быть в одном файле.

1 Ответ

58 голосов
/ 06 января 2012

Вам понадобится шпион, а не издевательство A:

    A a = Mockito.spy(new A(1,1));
    a.getPrice(2);
    verify(a, times(1)).getPriceForOne();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...