Java – how to simulate injected dependencies
•
Java
I want to use Guice in the JUnit test class below to inject simulation dependencies, especially resources How can I do this?
test
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));
}
}
resources
@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);
}
}
Solution
Consider using another test module to override the Guice injection configuration
I'll use my own example to show it, but it's easy to adapt to your needs
Module testModule = Modules.override(new ProductionModule())
.with(new AbstractModule(){
@Override
protected void configure() {
bind(QueueFactory.class).toInstance(spy(new QueueFactory()));
}
});
Injector injector = Guice.createInjector(testModule);
QueueFactory qFactorySpy = injector.getInstance(QueueFactory.class);
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
