【发布时间】:2021-09-29 10:35:30
【问题描述】:
我正在使用 Micronaut 框架。我正在为以下控制器编写junit。 -
class Controller {
Client client;
List<Object> handleEvent(Object event) {
try {
client.handle(event);
} catch (Exception E) {
throw new Exception()
}
}
}
我想模拟客户端对象。我尝试了@MockBean 注释和@Replaces 注释。但没有运气。
客户端是从工厂注入的 -
@Factory
class ClientFactory {
@Singleton
@Named("client_name")
Client getClient() {
return new Client();
}
}
我在测试中尝试了以下注释-
@Inject
Client client;
@MockBean(bean = Client.class, named = "client_name")
Client getClient() {
return Mockito.mock(Client.class);
}
它给出错误 - “无法为类注册器的参数 client_name 注入值。给定的限定符 @Named(client_name) 不存在类型的 bean” 注册器是另一个也注入了客户端的类同名。不知道为什么它会进入控制器的画面。
我对这些错误有点困惑。我也试过@Replaces注解,像这样-
@Replaces(value = Client.class, named = "client_name)
Client getClient() {
return Mockito.mock(Client.class);
}
但没有运气。有人可以指导我在这里缺少什么吗?
【问题讨论】: