如何自动清除和迁移数据库以进行测试?

时间:2015-03-27 01:40:28

标签: testing yii yii2 codeception

我正在使用Yii2构建API,并使用测试数据库进行一些代码API测试。但是,我希望在每轮测试中清除和迁移数据库。

我该如何解决这个问题?我无法在任何地方找到答案。

2 个答案:

答案 0 :(得分:3)

Yii迁移旨在完全按照您的意愿行事。有关于创建它们的完整文档here。缺点是您需要访问命令行。如果您没有这个,您仍然可以使用迁移,但您需要创建一个控制台应用程序的新实例。有关此问题的讨论,请参阅here

至于控制器操作冲洗数据库的风险,我同意它可能存在风险,但您可以将操作限制为仅使用规则的管理员用户,甚至可以使用表单启动操作,您可以使用csrf标记用于验证提交,并且仅允许通过post方法执行操作。如果您需要一些指导,我可以更新我的答案。

答案 1 :(得分:0)

无论是否测试API,都可以使用迁移将数据库内容恢复到某种状态,但我认为这不是您可以拥有的最佳解决方案,解决方案应该是使用夹具

在官方文档中查看有关灯具的更多信息:http://www.yiiframework.com/doc-2.0/guide-test-fixtures.html

一旦你实现了固定装置(应该非常简单,否则只是打开另一个帖子)你可能会发现实际上可能仍需要迁移以保持数据库结构同步。

此任务既可以由开发人员在提交创建任何测试之前手动完成,也可以在您拥有CI服务器时自动完成。

再一次,每次运行测试时都不需要运行迁移,只是在开始时。在任何类型的测试期间,都需要使用夹具将数据库置于特定状态。