我需要在 Micronaut 中测试我的服务层。我在服务层中使用 bean 验证,因此我需要在测试阶段注入验证器,而我不能只是模拟它。然而,我想模拟一些其他类,所以我也使用 Mockito。问题是,如果我将@MicornautTest放在我的类上,所有标有 @Inject 的 bean 都是Not-Null,这意味着 @Inject 工作正常。但是,一旦我将 @ExtendWith(MockitoExtension.class) 添加到类中并重新运行测试,所有标有 @Inject 的方法现在都为 null,并且所有标有 @Mock 的 bean 都为 Not-Null。所以看起来我可以在测试中使用@Inject,或者可以使用@Mock,但不能同时使用两者。@MicronautTest@ExtendWith(MockitoExtension.class)class CashServiceTest {@Injectprivate Validator validator;@Mockprivate AvailableCashClient availableCashClient;有人之前遇到过类似的问题吗?您能否指导我正确的配置,这将使我能够在相同的测试中使用 @Inject 和 @Mock 。
1 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
我能够找到问题,并且能够使用模拟的 bean 和原始注入的 bean。问题是我们不应该使用@ExtendWith注释,并且可以通过使用@micronaut测试来实现一切。
我正在粘贴我所做的设置的代码。在本例中,BusinessClient 是被模拟的 bean,而 Validator 是未经模拟而注入的 bean。
@MicronautTest 类 CashServiceTest {
@Inject
AvailableCashClient availableCashClient;
@Inject
Validator validator;
@MockBean(AvailableCashClient)
public AvailableCashClient availableCashClient() {
return Mockito.mock(AvailableCashClient);
}
添加回答
举报
0/150
提交
取消