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 框架中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PLA-机器学习基石2

Pla

PLA(感知机)

感知机学习算法(PLA)

SRS中的“PLA时间”和“CPB时间”是啥意思

PLA 2.3 Appstore 元数据被拒绝