2015-11-25 2 views
2

Я использую jmock для запуска некоторых тестов. Я хотел бы, чтобы гарантировать, что сторонняя библиотека будет правильно называть следующую последовательность на JDBC API:Как настроить ожидания на возвращаемое значение издевающегося вызова с помощью jmock?

context.checking(new Expectations() {{ 
    oneOf(connection).prepareStatement("test"); 
    oneOf(statement).setFetchSize(10); 
    oneOf(statement).executeQuery(); 
}}); 

Объект connection создан как таковой:

Mockery context = new Mockery(); 
connection = context.mock(Connection.class); 

Как создать statement объект? Я не пробовал это, и не работал:

// This creates an independent PreparedStatement mock, not the one that will be returned 
// by the Connection.prepareStatement call 
PreparedStatement statement = context.mock(PreparedStatement.class); 

// This doesn't return a mock object, which I can pass to the oneOf() method. 
PreparedStatement statement = oneOf(connection).prepareStatement("test"); 

ответ

2

Вы должны использовать will(returnValue(...)) в своих ожиданиях, чтобы указать результат, например:

context.checking(new Expectations() {{ 
    oneOf(connection).prepareStatement("test"); will(returnValue(statement)); 
    // ... 
}} 

Смотрите также JMock cheat sheet.

Пример, который I use in tests of Jaybird:

final PooledConnectionHandler conHandler = context.mock(PooledConnectionHandler.class); 
final Statement statement = context.mock(Statement.class); 
final Connection connectionProxy = context.mock(Connection.class); 
final StatementHandler handler = new StatementHandler(conHandler, statement); 

context.checking(new Expectations() { 
    { 
     oneOf(conHandler).getProxy(); will(returnValue(connectionProxy)); 
    } 
}); 
+0

Хах, я не получил, что во-первых, это отсоединен 'будет (...)' DSL элемент, который делает некоторые магии ... Спасибо! –

+1

@ lukaseer Да, в этом отношении mockito чувствует себя немного более естественным. Хотя по моему опыту, каждая макетная структура имеет свои собственные положительные и отрицательные стороны. По сути, каждый вызов метода в ожидании подталкивает дополнительное состояние. –

+0

Ну, как только вы знаете идеи, они, вероятно, в порядке, чтобы жить с ... –

Смежные вопросы