私はPlayFramework1.2.5を使用しており、以下に示すFunctionalTestに取り組んでいます。
public class CaseFoldersControllerTests extends FunctionalTest {
@Before
public void setup() {
Fixtures.deleteDatabase();
Fixtures.loadModels("data.yml");
}
@After
public void teardown() {
}
...
@Test
public void createAction() {
....
Request request = newRequest();
request.path = "/case/create";
request.body = new ByteArrayInputStream(json.getBytes());
Response response = makeRequest(request);
//Verify response is OK
assertStatus(200, response);
}
}
テスト(createAction)の実行中、data.ymlのデータは利用できません。ただし、テストが完了した後、データはデータベースにあります。
データ読み込みステートメントを@Beforeメソッドから@Afterメソッドに移動すると、テストは成功します(データがクリーンアップされ、前のテストからリセットされたため)。
これはJPAセッションに関連していると思いますが、Fixtures.loadModels()の後に以下を追加しても役に立ちませんでした。
JPA.em().flush();
また、興味深いのは、@ Beforeメソッドが、正常に機能する単体テストからコピーされたことです。私が問題を抱えているのはFunctionalTestだけです。
TIA、M2