gpt4 book ai didi

java - 如何在 Java 中使用 Mockito 验证字符串内容

转载 作者:行者123 更新时间:2023-12-01 19:04:00 25 4
gpt4 key购买 nike

我刚开始使用 Mockito 测试框架。我需要对一种返回字符串内容的方法进行单元测试。同样,相同的内容将存储在一个 .js 文件中(即“8.js”)。如何验证从方法返回的字符串内容是否符合我的预期。

请找到以下用于生成 .js 文件的代码:

public String generateJavaScriptContents(Project project)
{

try
{
// Creating projectId.js file
FileUtils.mkdir(outputDir);
fileOutputStream = new FileOutputStream(outputDir + project.getId() + ".js");
streamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
StringTemplateGroup templateGroup =
new StringTemplateGroup("viTemplates", "/var/vi-xml/template/", DefaultTemplateLexer.class);
stringTemplate = templateGroup.getInstanceOf("StandardJSTemplate");
stringTemplate.setAttribute("projectIdVal", project.getId());
stringTemplate.setAttribute("widthVal", project.getDimension().getWidth());
stringTemplate.setAttribute("heightVal", project.getDimension().getHeight());
stringTemplate.setAttribute("playerVersionVal", project.getPlayerType().getId());
stringTemplate.setAttribute("finalTagPath", finalPathBuilder.toString());
streamWriter.append(stringTemplate.toString());
return stringTemplate.toString();
}
catch (Exception e)
{
logger.error("Exception occurred while generating Standard Tag Type Content", e);
return "";
}

}

上述方法的输出写入 .js 文件,该文件的内容如下所示:

var projectid = 8;
var playerwidth = 300;
var playerheight = 250;
var player_version = 1;
.....

我已经使用mockito编写了testMethod()来测试这一点,但是我能够使用测试方法成功编写.js文件,但如何验证其内容?

谁能帮我解决这个问题吗?

最佳答案

正如 @ŁukaszBachman 提到的,您可以从 js 文件中读取内容。使用此方法时需要考虑以下几点:

  1. 测试会很慢,因为您必须等待 js 内容写入磁盘,从磁盘读回内容并断言内容。
  2. 理论上,测试可能会不稳定,因为当代码从文件读取时,整个 js 内容可能尚未写入磁盘。 (就此而言,如果您还没有的话,您可能应该考虑在 OutputStreamWriter 上调用lush() 和 close()。)

另一种方法是模拟您的 OutputStreamWriter 并将其注入(inject)到方法中。这将允许您编写类似于以下内容的测试代码:

OutputStreamWriter mockStreamWriter = mock(OutputStreamWriter.class);
generateJavaScriptContents(mockStreamWriter, project);
verify(mockStreamWriter).append("var projectid = 8;\nvar playerwidth = 300;...");

http://mockito.googlecode.com/svn/branches/1.5/javadoc/org/mockito/Mockito.html#verify%28T%29

关于java - 如何在 Java 中使用 Mockito 验证字符串内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10971100/

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