猿问

Micronaut 与 MockitoTests

我需要在 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 {


@Inject

private Validator validator;


@Mock

private AvailableCashClient availableCashClient;

有人之前遇到过类似的问题吗?您能否指导我正确的配置,这将使我能够在相同的测试中使用 @Inject 和 @Mock 。


叮当猫咪
浏览 90回答 1
1回答

慕莱坞森

我能够找到问题,并且能够使用模拟的 bean 和原始注入的 bean。问题是我们不应该使用@ExtendWith注释,并且可以通过使用@micronaut测试来实现一切。我正在粘贴我所做的设置的代码。在本例中,BusinessClient 是被模拟的 bean,而 Validator 是未经模拟而注入的 bean。@MicronautTest 类 CashServiceTest {@InjectAvailableCashClient availableCashClient;@InjectValidator validator;@MockBean(AvailableCashClient)public AvailableCashClient availableCashClient() {    return Mockito.mock(AvailableCashClient);}
随时随地看视频慕课网APP

相关分类

Java
我要回答