2013-12-19 2 views
0

나는 gwt, mvp 및 easymock에 초보자입니다. 발표자가 원격 RestService를 호출하는 MVP 패턴을 사용하여 응용 프로그램을 작성 중입니다. EasyMock을 사용하여 원격 서비스를 호출하는 발표자 기능을 테스트하고 싶습니다. 내가 테스트를 실행하고 테스트를 성공적으로 통과 발표자 전화 서비스 테스트 휴식 EasyMock

expect(applicationView.get()).andReturn(5);  
    applicationPresenter.setView(applicationView); 

    replay(applicationView); 

    MyRestService mService = createNiceMock(MyRestService.class);  
    applicationPresenter.setMyRestService(mService); 
    applicationPresenter.fetchAllBooks(); 
    verify(applicationView); 

처럼 현재 내 코드 보인다. 내가 제대로하고 있니? 서비스가 MethodCallback에서 응답을 반환하는 RestService 인터페이스이기 때문에 응답을 테스트하는 방법. 내 서비스 인터페이스는 다음과 같습니다.

@Path("/rest-service") 
public interface MyRestService extends RestService { 
@Path(value="/getAllBooks") 
@GET 
void getAllBooks(MethodCallback<List<Book>> callback); 

제 발표자 및 서버 호출 테스트 절차가 올바르게 진행될 수 있도록 도와주십시오. 응답을 테스트하고 값을 애플리케이션보기로 전달하는 방법은 무엇입니까? 값을 보거나 모의 치기 위해 값을 전달해야합니까?

나는 REST 서비스에 대한 대규모 지식이 아니에요 감사합니다,

답변

0

하지만 get로 시작하고 공백을 반환하는 웹 서비스는 나에게 매우 이상한 것 같다.

그 외에도 서비스가 모의 인 경우 getAllBooks으로 전화를해야합니다. 모양에서 fetchAllBooks 메서드는 MethodCallBack을 인스턴스화 한 다음 모의 서비스에 제공합니다. 따라서 fetchAllBooks 메서드가 계속 될 때 예상되는 상태가되도록 변경하려면 andAnswer()을 사용해야합니다.

MyRestService mService = createNiceMock(MyRestService.class); 
      mService.getAllBooks(EasyMock.isA(MethodCallcack.class)); 
    EasyMock.expectLastCall().andAnswer(new IAnswer() { 

     @Override 
     public Object answer() throws Throwable { 
      final Object[] currentArguments = EasyMock.getCurrentArguments(); 
      MethodCallback callback = ((MethodCallback)currentArguments[0]); 
      //Set whatever you need to on your MethodCallback so that the data makes it back. 

      return null; 
     } 

    }); 

    //Don't forget to replay 
    EasyMock.replay(mService); 

here 너무

이런 종류의에 대한 좋은 스택 오버플로 게시물이이 같은

뭔가 트릭을 할해야