2016-12-23 4 views
-3

easymock을 사용하여 요청과 응답을 조롱했으나 여전히 요청 메서드에서 각 행을 통과하여 예외가 발생했습니다.모의 메서드는 여전히 실제 메서드를 호출합니다.

예는 :

public class helper{ 

public String getCB(){ 
    Response response = serviceImpl.getDefaultMethod(request); 
    return response.getString(); 
} 

테스트 :

expect(MockServiceImpl.getDefaultMethod(mockRequest)).andReturn(mockResponse); 

자사가 getDefaultMethod() 내부에 가고, 예외를 얻기.

나는 그 방법으로 코드를 읽는 이유를 이해하지 못한다. 아무도 나를 도울 수 있습니까?

+1

프로덕션 코드와 테스트 모두에 [MCVE] (http://stackoverflow.com/help/mcve)를 추가하십시오. –

답변

0

AFAIK easymock은 정적 메서드 호출을 모의 할 수 없습니다.

당신은 줄 방법 ​​및 모의 request

Response response = ServiceImpl.getDefaultMethod(request); 

를 이동해야합니다.

다른 접근 방법은 PowerMock을 사용하는 것이지만 IMHO는 나쁜 디자인에 항복합니다.

+0

getDefaultMethod가 정적이 아닙니다 – user2514421

+0

* "getDefaultMethod는 정적이 아닙니다"*하지만 정적 액세스를 사용합니다 (편집 및 테스트 예에서 여전히 사용) –

0

메서드가 정적이 아니고 final이 아닌 경우 작동해야합니다.

그렇지 않으면 모의 객체에서이 메소드를 호출하지 않고 클래스의 실제 인스턴스에서이 메소드를 호출하지 않는다는 의미입니다. 우리에게 모의 생성과 주사를 보여 주면 그 사실을 확인할 수 있습니다.