ファイルを処理するコードをカバーしようとしています。私はテストのために実際のファイルを使用しないようにしようとしているので、私はMockitoを使用しています。Junit - ファイルを模倣する
try {
byte[] data = Files.readAllBytes(((File) body).toPath());
immutableBody = data;
actualHeaderParams.put(HttpHeaders.CONTENT_LENGTH, (new Integer(data.length)).toString());
contentType = MediaType.APPLICATION_OCTET_STREAM;
}
私はモックファイルを使用しています: これは私がテストしようとしているコードである
File mockedFile = Mockito.mock(File.class);
が、私は「toPath」に関する例外を取得します。そこでいくつかのパスまたはnullを追加しましたが、ファイルがパスに存在しないため、再び例外が発生します。
when(mockedFile.toPath()).thenReturn(Paths.get("test.txt"));
取得:
com.http.ApiException: There was a problem reading the file: test.txt
は、テストのために実際のファイルを作成せずにそれを行う方法はありますか?
コンテンツを渡す方法を見つけ、それをファイルから読み取るという事実を外部化します。メソッドのシグネチャを変更して、バイトのソースを移動します。 – duffymo
通常、 '@Rule Public TemporaryFolder folder = new TemporaryFolder()'を使い、必要な "偽の"ファイルコンテンツを作成する方が簡単です。ファイルを欺くことは本当に痛いほどのことになります。 – cjstehno