如何为调用另一个服务类的方法的服务类创建测试?
使用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抱怨它,所以我不能使用它。
暂无答案!
目前还没有任何答案,快来回答吧!