gpt4 book ai didi

java - 如何模拟注入(inject)的依赖

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:09 25 4
gpt4 key购买 nike

我想在下面的 JUnit 测试类中使用 Guice 来注入(inject)模拟依赖项,特别是 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);
}

}

最佳答案

考虑使用另一个测试模块覆盖您的 Guice 注入(inject)配置。

我将使用自己的示例来展示它,但它很容易适应您的需求。

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);

关于java - 如何模拟注入(inject)的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19772247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com