如何在Java中使用Mockito验证字符串内容
我不熟悉使用Mockito测试框架。我需要对一个返回字符串内容的方法进行单元测试。同样的内容也将存储在一个.js文件中(即“8.js”)。 如何验证方法返回的字符串内容是否符合预期 请查找以下生成.js文件的代码:如何在Java中使用Mockito验证字符串内容,java,mockito,Java,Mockito,我不熟悉使用Mockito测试框架。我需要对一个返回字符串内容的方法进行单元测试。同样的内容也将存储在一个.js文件中(即“8.js”)。 如何验证方法返回的字符串内容是否符合预期 请查找以下生成.js文件的代码: public String generateJavaScriptContents(Project project) { try { // Creating projectId.js file FileUtils.mk
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-projectd=8var playerwidth=300<玩八= 250;
var player\u version=1
我已经使用mockito编写了
testMethod()
来测试它,但是我能够使用测试方法成功地编写.js文件,但是如何验证其内容呢
有人能帮我解决这个问题吗?如果您将这个
*.js
文件持久保存在文件系统上,那么只需创建一个util方法来读取它的内容,然后使用某种assertEquals
将它与您的固定数据进行比较
是将文件内容读入
字符串的代码
如果将此*.js
文件持久保存在文件系统上,则只需创建一个util方法来读取其内容,然后使用某种assertEquals
将其与固定数据进行比较
是将文件内容读入
字符串的代码
正如@ukaszBachman提到的,您可以从js文件中读取内容。当使用这种方法时,有两件事需要考虑:
OutputStreamWriter
,并将其注入方法中。这将允许您编写类似以下内容的测试代码:
OutputStreamWriter mockStreamWriter = mock(OutputStreamWriter.class);
generateJavaScriptContents(mockStreamWriter, project);
verify(mockStreamWriter).append("var projectid = 8;\nvar playerwidth = 300;...");
正如@ukaszBachman提到的,您可以从js文件中读取内容。当使用这种方法时,有两件事需要考虑:
OutputStreamWriter
,并将其注入方法中。这将允许您编写类似以下内容的测试代码:
OutputStreamWriter mockStreamWriter = mock(OutputStreamWriter.class);
generateJavaScriptContents(mockStreamWriter, project);
verify(mockStreamWriter).append("var projectid = 8;\nvar playerwidth = 300;...");
如果要注入OutputStreamWriter,还可以创建一个新的ByteArrayOutputStream,而不是模拟一个。然后,您可以通过对流执行
toString()
并对其执行断言来检查内容。对我来说,这比验证模拟更自然,但这可能是个人偏好的问题。如果您正在注入OutputStreamWriter,您还可以创建一个新的ByteArrayOutputStream,而不是模拟。然后,您可以通过对流执行toString()
并对其执行断言来检查内容。对我来说,这比验证一个模拟更自然,但这可能是个人偏好的问题。