0

Mockito テスト フレームワークの使用は初めてです。文字列の内容を返す 1 つのメソッドを単体テストする必要があります。また、同じ内容が 1 つの .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;
.....

testMethod()これをテストするために mockito を使用して記述しましたが、テスト メソッドを使用して .js ファイルを正常に書き込むことができますが、その内容を確認するにはどうすればよいですか?

誰でもこの問題を解決するのを手伝ってもらえますか?

4

2 に答える 2

4

@ŁukaszBachmanが言及しているように、jsファイルから内容を読み取ることができます。このアプローチを使用する際に考慮すべきことがいくつかあります。

  1. jsコンテンツがディスクに書き込まれるのを待ち、ディスクからコンテンツを読み戻し、コンテンツをアサートする必要があるため、テストは遅くなります。
  2. コードがファイルから読み取るまでにjsコンテンツ全体がディスクに書き込まれない可能性があるため、テストは理論的に不安定になる可能性があります。(まだ行っていない場合は、OutputStreamWriterでflush()とclose()を呼び出すことを検討する必要があります。)

もう1つのアプローチは、モック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

于 2012-06-11T04:16:44.070 に答える
0

この*.jsファイルをファイル システムに永続化する場合は、その内容を読み取り、何らかの方法でassertEqualsそれを固定データと比較する util メソッドを作成するだけです。

ファイルの内容を に読み込むコードを次に示しStringます。

于 2012-06-10T20:27:25.483 に答える