gpt4 book ai didi

java - 在运行时更改 guice 实例的值

转载 作者:行者123 更新时间:2023-11-30 08:39:27 25 4
gpt4 key购买 nike

我正在使用 google guice 注入(inject)此类示例

 class A {
String a;
}

然后注入(inject)到我的B类

  class B {
@Inject A aInstance;

public void checkValue(){
System.out.println(aInstance.a);
}
}

也许使用 aspectJ,但我想要的是,我的那个测试会得到这个 A 实例并将“a”字符串设置为“foo”,然后执行涵盖 B 类的测试,所以当B 类调用 checkValue 这个会打印“foo”

最佳答案

您在问题中提到了 test 这个词 - 如果您正在为 B 编写 jUnit 测试,您可以在 @Before 子句中执行注入(inject),如 here 所示。

private Injector injector;

@Before
public void init() throws Exception {
injector = Guice.createInjector(new AbstractModule() {

@Override
protected void configure() {
bind(A.class).to(MockedInstanceOfAWithValueFoo.class);
}
});
}

你也可以打电话

bind(A.class).toInstance(new MockedInstanceOfAWithValueFoo());

如果我们假设 A 有一个可以定义 A.a 的构造函数,则模拟实例可能如下所示:

public class MockedInstanceOfAWithValueFoo extends A{

public MockedInstanceOfAWithValueFoo() {
super("foo");
}

}

同样,您可以让模拟类通过构造函数接受 A.a 的值,从而使 B(以及 A.a 的关联值)的创建更加动态。

关于java - 在运行时更改 guice 实例的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36150263/

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