Как сделать Inject Mocks равным нулю? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть класс, который выглядит примерно так:

public class Foo {
    SomeObj dummy;
    ...
    public Bar makeBar(){
        if(dummy == null) {
            ...do stuff
        }
        return new Bar(dummy);
    }
}

Я пытаюсь выполнить модульный тест в содержании оператора if, чтобы убедиться, что мой код выполняет то, что ему нужно.

Прямо сейчас мой модульный тест выглядит примерно так:

public class FooTest {    
    @InjectMocks
    Foo foo;

    @Mock
    SomeObj dummy;

    @Before
    public void setUp() throws Exception
    {
        foo = new Foo();

        MockitoAnnotations.initMocks(this);
    }
    ...
    @Test
    public void testMakeBar()
    {
        when(dummy.equals(null)).thenReturn(true);
        ...
        foo.makeBar();
    }
}

Конечно, это не работает, поэтому я здесь.Короче говоря, как мне издеваться над оператором ==?

Примечание: извините, если это глупый вопрос или его легко исправить.При попытке зайти в Google, я получил много «Inject mocks is null», что на самом деле противоположно моей проблеме.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Если это так просто, как в примере, приведенном здесь, вы можете просто создать новый Foo (т.е. фактическое создание нового экземпляра Foo ()) в junit и запустить его.

Если, как я представляю, все гораздо сложнее с другими зависимостями, необходимыми для достижения точки, которую вы хотите протестировать, вы можете создать новый Foo с @InjectMocks и затем в junit или setup вручнуюустановите SomeObj на ноль.Таким образом, вам не нужно гадить с другим объектом Foo, который предположительно используется в других тестах.

0 голосов
/ 19 февраля 2019

Я подозреваю, что вы слишком обдумываете вещи.Просто прекратите насмешку dummy или прекратите вводить насмешки в Foo, и вы получите экземпляр Foo с null dummy (так как он никогда не был инициализирован).

...