2009-04-13 4 views
3

Groove에서 mock.interceptor 패키지를 사용하여 객체를 모의하려고 시도했습니다.Groovy의 mock.interceptor 패키지를 사용하여 객체 생성자를 조롱하는 방법은 무엇입니까?

def mock = new MockFor(TheClass); 
mock.demand.theMethod{ "return" } 
mock.use { 
    def underTest = new TheClass() 
    println underTest.theMethod() 
} 

문제는 use{ 블록에서 TheClass()을 생성 할 때 실제 생성자를 사용하는 것이고, 사용하지 마십시오. 생성자를 사용할 필요없이 theMethod에 대해 신경 써야 할 방법을 테스트 할 수 있도록이 클래스의 인스턴스를 어떻게 만들 수 있습니까?

EasyMock/CE를 사용하면 생성자를 사용하지 않고 mock을 만들 수 있지만 Groovy에서이를 달성하는 방법이 궁금합니다.

답변

1

나는 최근에 GMock의 저자에 의한 프리젠 테이션을 보았으며, 나는 당신이 생각하는 "생성자"조롱을 허용하는 몇 가지 갈고리가있다.

def mockFile = mock(File, constructor('/a/path/file.txt')) 

이 라이브러리가 그루비하는 "내장"는 다르다, 그러나 그것은 어떤 사물의 종류에 넣어 생각했다 당신이 조롱 할 더 중요한 오류 메시지는 시험을 얻을 것입니다, 아주 잘 쓰여진 보았다 실패해야합니다.

나는 이것이 당신이 무엇인지 생각합니다. 내가 사용하는 constructor을 조심스럽게 조롱한다고 해보자. Factory 객체를 주입해야하는 냄새가 날 수 있지만 어떤 경우에는 잘 작동하는 것으로 보인다.

1

MockFor를 호출 할 때 interceptConstruction 플래그를 사용할 수 있습니다 ( MockFor 참조).

관련 문제