我有一个对象读取如下配置属性:
@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对象。这是如何运作的?谢谢!
答案 0 :(得分:1)
似乎CDI根本不会注册Config对象。
运行测试时未初始化CDI bean,只有被模拟的对象。
MockitoAnnotations.initMocks
仅初始化
使用Mockito注释为给定的testClass注释的对象:@Mock,@ Spy,@ Captor,@ InjectMocks。