从Symfony测试用例

时间:2015-08-18 09:33:21

标签: sqlite symfony doctrine-orm

我通常使用Symfony Web测试用例来测试我的端点。在这种情况下,我只想测试一个存储库调用以持久保存新实体,因此我想避免使用Web测试客户端。

我首先使用Web测试客户端测试,POST到端点将使用存储库在SQLite数据库中创建实体。但是,如果我在测试中获取了存储库类并直接调用了创建方法,则它会在persist()上失败,但例外情况为:

  

MyEntity类型的实体缺少字段' id'的已分配ID。此实体的标识符生成策略要求在调用EntityManager#persist()之前填充ID字段。如果您想要自动生成标识符,则需要相应地调整元数据映射。

我已使用

更新了架构

app/console doctrine:schema:update --force --env=test

app/console doctrine:schema:validate --env=test仍告诉我数据库不是最新的。这表明映射存在问题,但如果映射存在问题,为什么它会在生产中使用(使用MySql),或者为什么如果我使用Web测试客户端调用它呢?

ID的学说映射是:

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="IDENTITY")
 *
 * @var int
 */
private $id;

0 个答案:

没有答案