我是使用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文件,但是如何验证其内容?
有人可以帮我解决这个问题吗?
答案 0 :(得分:4)
正如@ŁukaszBachman所提到的,你可以从js文件中读取内容。使用这种方法时需要考虑几件事情:
另一种方法是模拟你的OutputStreamWriter
并将其注入方法中。这将允许您编写类似于以下内容的测试代码:
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
答案 1 :(得分:0)
如果您将此*.js
文件保留在文件系统上,则只需创建一个util方法,该方法将读取其内容,然后使用某种assertEquals
将其与您的固定数据进行比较。
Here是将文件内容读入String
的代码。