2013-11-12 5 views
2

У меня есть класс Handler.javaMock открытый метод с использованием JMockit

Он имеет 2 открытых методов обновления(), выборки()

В реализации фактическое обновление() Я делаю вызов общественности метод fetch()

С помощью функции fetch() вызывается услуга.

Так что теперь я должен написать testUpdate(), который будет издеваться общественный вызов метода т.е. выборки()

Поскольку его не статична я попытался создать другой экземпляр Handler.java, как издевались т.е.

private Handler handler; 

@Mocked 
private Handler mockedHandler; 

Теперь с помощью mockedHandler, я поставил следующий код в моем testUpdate()

new NonStrictExpectations(){ 
mockedHandler.fetch(); 
returns(response); 
}; 

handler.update(); 

Теперь я ожидаю, что mockedhandler будет использоваться для вызова выборки() и й e handler для вызова update().

Но когда я запускаю метод вызова метода update(), тоже издевается !!!

i.e. handler.update(); is not at all going to the update(). 

Помоги мне издеваться второй публичный метод, который я называю внутри моего обновления()

Благодаря

+0

Посмотрите Spy http://docs.mockito.googlecode.com/hg/latest/org/mockito/Spy .html –

ответ

6

Это звучит для меня, что вы должны быть насмешливым класс обслуживания под названием внутри Handler#fetch(), а не издеваясь над методом fetch().

Во всяком случае, насмешливый некоторых методов класса, а не издеваешься другими называются частичного насмешливым. В JMockit, вы обычно используете NonStrictExpectations(Object...) конструктор для этого, как показано в следующем примере тест:

@Test 
public void handlerFetchesSomethingOnUpdate() 
{ 
    final Handler handler = new Handler(); 

    new NonStrictExpectations(handler) {{ 
     handler.fetch(); result = response; 
    }}; 

    handler.update(); 
}