Java 莫基托-无内部法的试验方法
我有以下课程Java 莫基托-无内部法的试验方法,java,spring,unit-testing,testng,mockito,Java,Spring,Unit Testing,Testng,Mockito,我有以下课程 public class EmailManager{ protected String getEmailContent(String content,String image){ String result = content.toPrettyLook(); //this is an inner method result+="<img src='" + +"' />"; return result; } protected
public class EmailManager{
protected String getEmailContent(String content,String image){
String result = content.toPrettyLook(); //this is an inner method
result+="<img src='" + +"' />";
return result;
}
protected String getImageLocation(String image){
//write image to disc
return newLocation;
}
}
public class EmailManagerTest{
EmailManager emailManager;
@Test
public void testEmailContent(){
String result = emailManager.getEmailContent("Hello World");
}
}
公共类EmailManager{
受保护的字符串getEmailContent(字符串内容、字符串图像){
String result=content.toPrettyLook();//这是一个内部方法
结果+=”;
返回结果;
}
受保护的字符串getImageLocation(字符串图像){
//将图像写入光盘
返回新位置;
}
}
公共类EmailManagerTest{
EmailManager EmailManager;
@试验
公共邮件内容(){
String result=emailManager.getEmailContent(“Hello World”);
}
}
你想要的是一个间谍:一个被部分模拟的物体。您想测试real
getEmailContent()
方法,但想存根同一对象的getImageLocation()
方法。所以测试应该是这样的
public class EmailManagerTest{
private EmailManager emailManager;
@Test
public void testEmailContent(){
emailManager = spy(new EmailManager());
doReturn("new location").when(emailManager).getImageLocation("someImage");
String result = emailManager.getEmailContent("Hello World", "someImage");
// assertions ...
}
}
如果要使用注释让Mockito为您创建spy,则可以使用spy注释:
@Spy
private EmailManager emailManager = new EmailManager();
不要忘记添加@Before方法,该方法调用MockitoAnnotations.initClass(this)
Mockito有很好的文档记录。阅读。这里你想要的是一个间谍:一个部分模拟的对象。您想测试real
getEmailContent()
方法,但想存根同一对象的getImageLocation()
方法。所以测试应该是这样的
public class EmailManagerTest{
private EmailManager emailManager;
@Test
public void testEmailContent(){
emailManager = spy(new EmailManager());
doReturn("new location").when(emailManager).getImageLocation("someImage");
String result = emailManager.getEmailContent("Hello World", "someImage");
// assertions ...
}
}
如果要使用注释让Mockito为您创建spy,则可以使用spy注释:
@Spy
private EmailManager emailManager = new EmailManager();
不要忘记添加@Before方法,该方法调用MockitoAnnotations.initClass(this)
Mockito有很好的文档记录。阅读。我尝试了您的代码,但正在执行getImageLocation方法!有什么原因吗?我尝试了你的代码,但是正在执行getImageLocation方法!有什么原因吗?