【发布时间】:2015-11-30 16:30:24
【问题描述】:
我有一个对象读取这样的配置属性:
@ApplicationScoped
public class Configuration {
@Inject
@Config(value = "endpoint.base", defaultValue = "http://localhost:52885/consumers")
private String base;
public String getBase() { return base; }
}
这个对象被注入到这样的服务对象中:
public class LoyaltyService {
final Sender sender;
final Configuration config;
@Inject
public LoyaltyService(Sender sender, Configuration config) {
this.sender = sender;
this.config = config;
}
}
我现在正在使用 Mockito 测试这个服务对象。我想模拟 Sender 对象,但我不想模拟配置,或者至少我只想使用对象内部定义的默认值。
如何在 Test 对象中做到这一点?
例如,我尝试了以下方法:
public class LoyaltyServiceTest {
@Mock
private Sender sender;
@Inject
private Configuration config;
private LoyaltyService target;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
when (sender.post(anyString(), anyString())).thenReturn("Post Success");
target =new LoyaltyService(sender, config);
}
}
CDI 似乎根本不会注册 Config 对象。这是如何运作的?谢谢!
【问题讨论】:
标签: java unit-testing mockito