java—注入被测服务的服务的模拟或调用方法

l7wslrjt  于 2021-07-15  发布在  Java
关注(0)|答案(0)|浏览(185)

如何为调用另一个服务类的方法的服务类创建测试?
使用autowiring将第二个服务类注入第一个服务类。
当我运行我的测试时,我得到空指针异常,因为注入类的方法没有被调用。
这是我的测试代码:

@RunWith(MockitoJUnitRunner.class)
public class AddressesTest {

    @Mock
    private Populator populator;
    @InjectMocks
    private Addresses addresses;

    @Before
    public void setUp() throws Exception {
        addresses = new Addresses(populator);
    }

    @Test
    public void addresses_are_not_null() {
        Addr addr =Addr.builder()
         .shipping(Addr.builder().buildingName("1").build();
        ConsumerData consumerData = new ConsumerData();

        addresses.calculate(consumerData);
        assertThat(consumerData.getType(BILLING).getBuildingName(), equalTo("1"));
}

从内部 calculate() 方法调用的方法 populate() 被称为。这个 populate() 方法在 Populator 在测试中被模拟的类。
我尝试过以下方法:

ControlAccessHelper.fullAccess().getQualifiedFieldAccess("additionalAddresses")));

when(populator.populate(any(), any(), any(), any(), any())).thenReturn(new ApplicationAddressData());

还有

doCallRealMethod().when(populator.populate(any(), any(), any(), any(), any()));

但我的Assert总是以空指针异常结束。
如何执行作为被测试类的依赖项注入的类的方法?你能举个例子吗?
当然我已经试过了:

when(populator.populate(any(), any(), any(), any(), any())).thenReturn("InputDataIwant" , "InputDataIwant", "InputDataIwant", "InputDataIwant", "InputDataIwant");

出于某种原因intellij抱怨它,所以我不能使用它。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题