Mockito 阻止 micronaut 属性注入

问题描述 投票:0回答:1

基本问题: 在测试中使用

@Mock
@InjectMocks
时,您必须对仍想正常注入的所有 Bean 使用
@Spy
。问题是这不适用于
@Property
,您不能在
@Spy
上使用
@Property
。但是当没有
@Spy
时,“envValue”的属性值为 null。那该怎么办?

@MicronautTest
@Property(name = "someEnvName", value = "0")
public class TestFooBar {
    @Spy
    @Inject
    private Foo foo; //bean that is injected inside Bar

    @Mock
    private ClassToBeMocked mocked; //bean that is injected inside Bar

    @Spy
    @Property(name = "someEnvName")
    private Long envValue; //some property that is used in Bar. --> throws an error

    @InjectMocks
    private Bar bar; //class to test

mockito micronaut
1个回答
0
投票

好的。解决方案就像 micronaut 文档中建议的那样 (https://micronaut-projects.github.io/micronaut-test/4.0.0-M8/guide/index.html#junit5) 而不是在所有“正常”实现上使用

@Spy
。我只是不得不使用

    @MockBean(ClassToBeMockedImpl.class)
    public ClassToBeMocked classToBeMocked() {
        return mock(ClassToBeMocked.class);
    }

在课堂上我想要模拟。所以所有的现场注入都是不必要的。

© www.soinside.com 2019 - 2024. All rights reserved.