2012-06-28 11 views
6

Mi código:Cómo se burlan de clases inyectados muelles usando JMockit

class A extends X { 
    @Autowired 
    B b; 

    @Override 
    method() { 
     //do something 
     b.callMethodInB; 
     //do something 
    } 

} 

class B extends X { 
    @Autowired 
    C c; 

    @Override 
    method() { 
     //do something 
     c.callMethodInC; 
     //do something 
    } 

} 

necesito para probar method() en A. Entonces, ¿cómo burlarse de B. Estoy usando Junit4 y Jmockit.

+1

¿Está preguntando cómo burlarse de B, o cómo inyectar el simulacro B en A en sus pruebas? –

Respuesta

0

Dado que Mocking Frameworks generalmente depende de DI (Inyección de Dependencia), lo que básicamente significa que debe transferir el objeto simulado en la firma del método, no estoy seguro de que sea posible.

Pero eche un vistazo a here, podría darle una dirección sobre cómo hacerlo.

8

intentar algo como esto:

import org.junit.*; 
import mockit.*; 

public class ATest 
{ 
    @Tested A a; 
    @Injectable B b; 

    @Test 
    public void testMethod() 
    { 
     a.method(); 

     new Verifications() {{ b.callMethodInB(); }}; 
    } 
} 

JMockit instancia automáticamente A con una inyectada B instancia (desde el campo simulacro b), estableciéndolo en el campo a en la clase de prueba. Esto es independiente del marco DI usado (primavera).

+0

Esto no ** funcionó ** para mí, ni '@Mocked B b;' funcionó .. en jmockit 1.30 –

Cuestiones relacionadas