2012-06-28 25 views
6

Mã của tôi:Làm thế nào để chế nhạo mùa xuân lớp tiêm sử dụng 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 
    } 

} 

Tôi cần phải kiểm tra method() trong A. Vì vậy, làm thế nào để chế giễu B. Tôi đang sử dụng Junit4 và Jmockit.

+1

Bạn đang hỏi cách giả lập B hay cách tiêm B giả vào A trong các thử nghiệm của bạn? –

Trả lời

0

Vì khung Mocking thường phụ thuộc vào DI (Dependency Injection), về cơ bản có nghĩa là bạn cần phải chuyển đối tượng giả trong chữ ký phương thức, tôi không chắc chắn là có thể.

Nhưng hãy xem here, nó có thể cung cấp cho bạn hướng dẫn cách thực hiện.

8

Hãy thử một cái gì đó như thế này:

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 tự động instantiates A với một tiêm B dụ (từ lĩnh vực mock b), đặt nó vào lĩnh vực a trong lớp thử nghiệm. Điều này độc lập với khung DI được sử dụng (Spring).

+0

Điều này đã ** không ** làm việc cho tôi, không phải '@Mocked B b;' đã làm việc .. trên jmockit 1.30 –

Các vấn đề liên quan