Тестирование GWTP с Mockito - PullRequest
       26

Тестирование GWTP с Mockito

1 голос
/ 10 декабря 2011

Я использую Mockito для тестирования моего проекта GWTP, и у меня есть ошибка:

    com.google.inject.CreationException: Guice creation errors:

1) No implementation for javax.servlet.http.HttpServletRequest was bound.
  while locating com.google.inject.Provider<javax.servlet.http.HttpServletRequest>
    for parameter 0 at com.gwtplatform.dispatch.server.guice.request.DefaultRequestProvider.<init>(DefaultRequestProvider.java:35)
  at com.gwtplatform.dispatch.server.guice.DispatchModule.configure(DispatchModule.java:135)

Ниже приведен код для модульного теста:

@Mock
private TestActionHandler mockTestActionHandler;

@Before
public void setUp() {
    Injector injector = Guice.createInjector(new ServerModule(), new MockHandlerModule() {

        @Override
        protected void configureMockHandlers() {
                bindMockActionHandler(TestActionHandler.class, 
                        mockTestActionHandler);
            }
        }); 
}

Вот код для TestActionHandler:

public class TestActionHandler implements ActionHandler<TestAction, TestResult> {

    private final Provider<HttpServletRequest> provider;

    @Inject
    public RetrieveEventsUsingCategoryIdActionHandler(
            final Provider<HttpServletRequest> provider) {
        this.provider = provider;
    }

    @Override
    public TestResult execute(TestAction action, ExecutionContext context) {
        //handle action
    }
}

Может кто-нибудь помочь мне исправить это?Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Благодаря сообщению dinde в группе GWTP я решил эту проблему.

Похоже, что тест жалуется на отсутствие Provider для HttpServletRequest, поэтому в setUp теста, я добавляю провайдера для HttpServletRequest, и проблема решена.Вот рабочий код:

@Mock
private TestActionHandler mockTestActionHandler;
@Mock
private HttpServletRequest servletRequest;

@Before
public void setUp() {
    Injector injector = Guice.createInjector(new ServerModule(), new MockHandlerModule() {

        @Override
        protected void configureMockHandlers() {
                bindMockActionHandler(TestActionHandler.class, 
                        mockTestActionHandler);
            }
        });

        @SuppressWarnings("unused")
        @Provides 
        public HttpServletRequest createServletRequest() { 
            return servletRequest; 
        } 
}
0 голосов
/ 09 сентября 2012

Поле, помеченное как @Bind, так и @Mock внутри тестового класса

@Bind
@Mock
private HttpServletRequest request;

работает для меня с помощью плагина mycila-testing-guice2.

...