gpt4 book ai didi

java - Mockito - 没有内部方法的测试方法

转载 作者:行者123 更新时间:2023-12-01 23:48:31 25 4
gpt4 key购买 nike

我有以下类(class)

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");
}
}
  1. 我应该在 EmailManager 上方添加什么注释? @Spy @Mock 或@Autowired?

  2. 如何告诉 Mockito 不要执行 getImageLocation(getEmailContent 调用的方法)并始终执行返回而不是“新位置”?我看了很多文章并得到了混淆“when”“stub”“doReturn”

最佳答案

这里你想要的是一个 Spy :一个部分模拟的对象。您想要测试真正的 getEmailContent() 方法,但想要对同一对象的 getImageLocation() 方法进行 stub 处理。所以测试应该是这样的

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();

不要忘记添加一个调用MockitoAnnotations.initClass(this)的@Before方法。

Mockito 有很好的文档记录。阅读 the documentation .

关于java - Mockito - 没有内部方法的测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16645964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com