2011-11-09 9 views
5

Pruebo unitario de un método que realiza algunas operaciones de serialización. Tengo la intención de burlarme de la lógica de serialización. El código es la siguiente:jMockit: ¿cómo esperar las llamadas de constructor a los objetos simulados?

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

He creado los siguientes objetos simulados:

@Mocked FileInputStream mockFIS; 

@Mocked BufferedInputStream mockBIS; 

@Mocked ObjectInputStream mockOIS; 

He fijado un bloque NonStrictExpectations() donde quiero esperar que las llamadas a constructores anteriores.

¿Alguna idea sobre cómo puedo lograr esto?

Respuesta

10

Puede especificar un conjunto completo de Expectativas para un conjunto de interacciones dado. De Behavior-based testing with JMockit:

Una posible prueba para el método doSomething() podría ejercer el caso donde SomeCheckedException se tira, después de un número arbitrario de iteraciones satisfactorias. Suponiendo que queremos (por cualquier motivo) a registro de un conjunto completo de expectativas para la interacción entre estas dos clases, que podría escribir la siguiente prueba:

@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

Después de "abc" se construye, puede prueba que se pasa a algún otro método? def.someMethod (abc)? Estoy teniendo problemas con esto porque las referencias no son iguales. –

Cuestiones relacionadas