假设我有两个这样的函数:(我不想共享实际的代码,它非常巨大(
public class EmailService{
String addressList1 = "test1@gmail.com,test2@gmail.com";
public String[] getAddressList(String addressList){
return addressList.split(",");
}
public int getNumber(){
for (String address : getAddressList(addressList1))
{
if (address.equals("test1@gmail.com")){return 1;}
}
return 0;
}
}
我在测试getNumber((函数时尝试了这个:
EmailService emailService1 = new EmailService();
EmailService emailService2 = Mockito.spy(emailService1);
String deliveryAddress = "test1@gmail.com,test2@gmail.com";
doReturn(deliveryAddress.split(",")).when(emailService2).getAddressList(deliveryAddress);
assertEquals(EmailService2.getNumber(), 1);
但我得到了:org.openest4j.AssertionFailedError:空
我找到了答案。
由于addressList1是一个局部变量,所以在调用getNumber函数之前,我必须设置它的值。
ReflectionTestUtils.setField(emailService2, "addressList1","test1@gmail.com,test2@gmail.com");