Fixtures.load_Model 在 Play 框架中不起作用
Posted
技术标签:
【中文标题】Fixtures.load_Model 在 Play 框架中不起作用【英文标题】:Fixtures.loadModels not working in PlayFramework 【发布时间】:2013-03-17 05:38:11 【问题描述】:我正在使用 PlayFramework 1.2.5 并且正在进行如下所示的功能测试
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 会话相关的,但在 Fixtures.loadModels() 之后添加以下内容没有帮助:
JPA.em().flush();
另外,有趣的是 @Before 方法是从我的单元测试中复制的,它可以正常工作。我只是在功能测试中遇到问题。
TIA, M2
【问题讨论】:
【参考方案1】:首先,我们需要确保确实调用了您的 setUp,因此我建议在您的方法中使用 Logger 来了解这一点。如果它真的被调用了,那么我建议您在不使用该请求的情况下测试您的 yml,也许可以通过为您尝试使用 yml 插入的模型创建一个 findAll()。这样我们就可以确定弄乱代码的不是您的要求。
** 这发生在我身上......我的@Before没有运行,因为我导入了play.MVC.Before,你必须导入org.junit.Before
【讨论】:
以上是关于Fixtures.load_Model 在 Play 框架中不起作用的主要内容,如果未能解决你的问题,请参考以下文章