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



我是使用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文件,该文件的内容如下所示:

变量投影 ID = 8;
VAR播放器宽度= 300;
VAR球员身高= 250;
变量 player_version = 1;
.....

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

谁能帮我解决这个问题?

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

  1. 测试会很慢,因为您必须等待 js 内容写入磁盘,从磁盘读回内容并断言内容。
  2. 从理论上讲,该测试可能是片状的,因为当代码从文件中读取时,整个js内容可能不会写入磁盘。(关于这一点,你可能应该考虑在 OutputStreamWriter 上调用 flush() 和 close(),如果你还没有的话。

另一种方法是模拟您的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

如果您将此*.js文件保留在文件系统上,则只需创建util方法即可读取其内容,然后使用某种assertEquals将其与您的固定数据进行比较。

这是将文件内容读入String的代码。

相关内容

  • 没有找到相关文章

最新更新