2011-11-09 2 views
5

일부 직렬화 작업을 수행하는 메서드를 단위 테스트하고 있습니다. 직렬화 논리를 조롱하려고합니다. 코드는 다음과 같습니다 :jMockit : Mocked 객체에 대한 생성자 호출을 예상하는 방법은 무엇입니까?

ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file))); 

나는 다음과 같은 모의 객체를 만들었습니다

@Mocked FileInputStream mockFIS; 

@Mocked BufferedInputStream mockBIS; 

@Mocked ObjectInputStream mockOIS; 

내가 설정에게 나는 위의 생성자 호출을 기대하고자하는 NonStrictExpectations() 블록을 가지고있다.

어떻게하면이 아이디어를 얻을 수 있습니까?

답변

10

주어진 일련의 상호 작용에 대해 일련의 기대 값을 지정할 수 있습니다. Behavior-based testing with JMockit에서 :

해봐요() 메소드 가능한 시험은 SomeCheckedException가 성공적인 반복 임의의 숫자 후, 발생됩니다 경우 을 행사할 수있다. 당신에게, "ABC"후

@Test 
public void doSomethingHandlesSomeCheckedException() throws Exception 
{ 
    new Expectations() { 
    DependencyAbc abc; 

    { 
     new DependencyAbc(); // expect constructor 

     abc.intReturningMethod(); result = 3; 

     abc.stringReturningMethod(); 
     returns("str1", "str2"); 
     result = new SomeCheckedException(); 
    } 
    }; 

    new UnitUnderTest().doSomething(); 
} 
+2

구성되어 있습니다 : 우리는 기록에 (어떤 이유로) 이 두 클래스 사이의 상호 작용에 대한 기대의 완전한 세트를한다고 가정하면, 우리는 아래의 테스트를 작성할 수 있습니다 그것이 다른 어떤 방법으로 넘어 간다는 것을 시험해 보라. def.someMethod (abc)? 참조가 동일하지 않기 때문에이 문제가 발생합니다. –

관련 문제