2011-02-02 3 views
0

오브젝트의 비 정적 메소드를 조롱해야합니다.비 정적 메소드 java mock을 대체하십시오.

문제는 내가이 객체가 코드에서 직접 생성되었으므로 mock 객체를 생성한다는 것입니다.

(어쩌면 PowerMockito.when는 정적 및 민간 방법 작동 그 때문에)

나는 PowerMockito.spy()와 PowerMockito.when (...)를 사용하여 클래스를 감시 시도했지만 작동하지 않았다 예를 들어 이것을 테스트해야한다고 가정 해 보겠습니다.

... myClass anObject = new myClass(); anObject.aMethod();
...

나는 어떻게 anObject.aMethod() 호출을 모의 수 있습니까?

은 내가 myClass가 스파이해야 할 것 같아요,하지만 작동하지 않았다 ..

답변

1

사용 종속성 주입.

가장 단순한 경우, 객체를 생성하는 메소드에 팩토리 객체를 전달한 다음 해당 팩토리를 스파이웨어로 지정하십시오.

이 작업을 수행하는 다른 방법은 개체 생성자에 팩터 리를 전달하는 것입니다.

1

종속성 삽입을 사용하도록 코드를 리팩터링하는 것이 가장 좋습니다.

그러나 빠른 Google은 PowerMockito에서 생성자를 실제로 스텁링 할 수 있다고 제안합니다. javadoc for whenNew을 참조하십시오.

PowerMockito를 사용하지 않았으므로 보증 할 수 없지만 생성자 호출이 mock 객체를 반환하도록 허용해야합니다.