2011-05-08 39 views
8

Chúng tôi có một thử nghiệm mở rộng JerseyTest và chúng tôi cần một dịch vụ giả được tiêm vào nó. Làm thế nào chúng ta có thể làm điều này?Đơn vị thử nghiệm Jersey với Mocks

Cảm ơn

+0

một cái mới Jersey của tôi. Tôi nghĩ mọi người đều sử dụng JUnit hoặc TestNG. – duffymo

+0

Mở rộng JerseyTest cho phép bạn thêm chú thích JUnit @Test thông thường, nhưng tôi không biết cách tiêm dịch vụ Mock vào cấu hình Spring được sử dụng bởi jersey-spring. Có suy nghĩ gì không? – alecswan

+0

Bạn có thực sự cần phải tiêm mockito khi nó chỉ có phương pháp tĩnh? – Spoike

Trả lời

2

Edit: giải pháp này chỉ làm việc với Jersey 1.x, và do đó là khá lỗi thời.

Nó đề cập đến thư viện http://geek.riffpie.com/unit-testing-restful-jersey-services-glued-together-with-spring/.

Nếu bạn sử dụng Spring, bạn có thể mở rộng AbstractSpringAwareJerseyTest thay vì JerseyTest và tiêm bất cứ thứ gì bạn cần.

Theo yêu cầu, một chút đoạn mã:

public class MyClassTest extends AbstractSpringAwareJerseyTest{ 

    @Autowired 
    private LdapSetupAndTearDown ldapSetupAndTearDown; 

    @Before 
    public void setUp2() throws Exception { 
    ldapSetupAndTearDown.setUp(); 
    } 

    @After 
    public void tearDown2() throws Exception { 
    ldapSetupAndTearDown.tearDown(); 
    } 

    public MyClassTest() throws Exception { 
    super(new WebAppDescriptor.Builder() 
    .contextPath("JSONUserServiceTest") 
    .contextParam("contextConfigLocation", 
     "classpath:/ctx-config-test.xml,classpath:/ctx-core.xml, classpath:/ctx-jmx-test.xml, classpath:ctx-jersey.xml, classpath:ctx-ldap.xml, classpath:ctx-ldap-test.xml") 
    .servletClass(SpringServlet.class).contextListenerClass(ContextLoaderListener.class).build()); 
    } 
+1

Tôi đoán anh ta trỏ đến: http://geek.riffpie.com/unit-testing-restful-jersey-services-glued-together-with-spring/ Mặc dù vậy, tôi đã không làm việc đó. –

+0

Chính xác, hướng dẫn này đã dẫn tôi đến giải pháp này, và nó hoạt động tốt. Cảm ơn sự chính xác. –

+0

Bạn có muốn xây dựng cách thức các hạt '@ Autowired' được tiêm vào lớp thử nghiệm không (ví dụ bạn đã chú thích một số' @ RunWith')? Bạn có thể vượt qua một ví dụ đơn giản của lớp kiểm tra của bạn ở đây? –

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