Fixtures.loadModels不在PlayFramework中工作
我正在使用PlayFramework 1.2.5,正在进行如下所示的功能测试Fixtures.loadModels不在PlayFramework中工作,playframework,playframework-1.x,Playframework,Playframework 1.x,我正在使用PlayFramework 1.2.5,正在进行如下所示的功能测试 public class CaseFoldersControllerTests extends FunctionalTest { @Before public void setup() { Fixtures.deleteDatabase(); Fixtures.loadModels("data.yml"); } @After public void teardown() {
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);
}
}
data.yml中的数据在执行我的测试(createAction)期间不可用。但是,在我的测试完成后,数据就在数据库中了
如果我将数据加载语句从@Before方法移动到@After方法…那么测试成功(因为数据现在已从先前的测试中清理和重置)
我假设这是与JPA会话相关的,但在fixture.loadModels()之后添加以下内容没有帮助:
JPA.em().flush();
另外,有趣的是@Before方法是从我的单元测试中复制过来的,它在单元测试中工作得很好。只有在功能测试方面我才有问题
蒂亚,
M2首先,我们需要确保您的设置确实被调用,因此我建议在您的方法中使用记录器来了解这一点。如果它真的被调用了,那么我建议您在不使用该请求的情况下测试您的yml,也许可以对您试图用yml插入的模型创建一个findAll()。通过这种方式,我们可以确保弄乱代码的不是您的请求 **这在我身上发生过。。。。。my@Before没有运行,因为我导入了play.MVC.Before,您必须导入org.junit.Before