9

次の JUnit テスト クラスで Guice を使用して、モックの依存関係、具体的にはresource. これどうやってするの?

テスト

public class SampleResourceTest extends ResourceTest {  

    @Override
    protected void setUpResources() throws Exception {
        // when(dao.getSample(eq("SIP"), eq("GA"))).thenReturn(sam);
        addResource(new SampleResource());
    }

    @Test
    public void getSampleTest() {
        Assert.assertEquals(sam, client().resource("/sample/SIP/GA").get(Sample.class));
    }

}

リソース

@Path("/sample")
@Produces(MediaType.APPLICATION_JSON)
public class SampleResource {   

    @Inject
    private SampleDao samDao;

    @GET
    @Path("/{sample}/{id}")
    public Sample getSample(@PathParam("id") String id) {
        return samDao.fetch(id);
    }

}
4

2 に答える 2

5

1 つのオプションは、Guice インジェクターを作成するときに Mock DAO インスタンスを DAO クラスにバインドすることです。次に、 を追加するときに、SampleResource代わりに getInstance メソッドを使用します。このようなもの:

Injector injector = Guice.createInjector(new AbstractModule() {
        @Override
        protected void configure() {
            bind(SampleDao.class).toInstance(mockDao);
        }
});

addResource(injector.getInstance(SampleResource.class);
于 2013-11-04T22:06:30.023 に答える