2015-03-09 7 views
0

Я пытаюсь написать единичный тест, который проверит метод fillA. Мне нужно проверить, что doSmth звонит с правильно инициализированными полями a. Вот пример.Как проверить параметры метода при вызове метода с помощью mockito?

SecondClass secondClass = new SecondClass(); 

public void execute() { 
    A a = new A(); 
    fillA(a); 
    secondClass.doSmth(a); 
} 

private void fillA(A a) { 
    a.setFirstField("first field"); 
    a.setSecondField("second field"); 
} 

class SecondClass { 
    public void doSmth(A a) { 
    // doSmth 
    } 
} 

class A { 
    private String firstField; 
    private String secondField; 

    // getters and setters 
} 

ответ

2

Для того, что secondClass вызывается, вы должны использовать Mockito.verify.

верифицировать(): проверить методы были вызваны с заданными аргументами можно использовать гибкое соответствие аргументов, например, любое выражение через any() или захвата, что аргументы, где называется использованием @Captor вместо этого.

Например:

Mockito.verify(secondClass).doSmth(<arg>); 

Если вы хотите, чтобы проверить, что a поля правильно инициализирован, <arg> может быть:

  • экземпляр (new A("first field", "second field")), если A определите надлежащее equals

    Аргументы, передаваемые сравниваются с использованием равных() метод»

  • обычай AArgumentMatcher

  • ArgumentCaptor
0

Вот основная структура теста вам нужно. Вам нужно высмеять ваш экземпляр SecondClass и ввести его в тестируемый класс. Я назвал ваш внешний класс Bar.

Этот код предполагает, что вы используете метод .equals() класса A.

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

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.runners.MockitoJUnitRunner; 

@RunWith(MockitoJUnitRunner.class) 
public class BarTest { 

    @Test 
    public void testAIsCorrectlyInitialized() throws Exception { 
    SecondClass secondClass = mock(SecondClass.class); 
    Bar bar = new Bar(); 
    bar.setSecondClass(secondClass); 

    A expected = new A(); 
    // here, populate "expected" with correct values 

    bar.execute(); 

    // Verify call (assumes A implements a proper equals) 
    verify(secondClass).doSmth(expected); 
    } 
} 
Смежные вопросы