为了账号安全,请及时绑定邮箱和手机立即绑定

Micronaut 与 MockitoTests

Micronaut 与 MockitoTests

叮当猫咪 2023-07-19 10:06:48
我需要在 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);

}


查看完整回答
反对 回复 2023-07-19
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信