无论如何在测试期间使用 mysqldump 而不是固定装置导入数据(在这种情况下为 rake test:profile)。
我未能成功导出 yml 格式的 mysql 数据(工作正常)并将其导入 rails(不起作用,rake 任务提示 yml 文件的格式,其完整性似乎完好无损)。
还有哪些日子可以使用或不使用固定装置导出/导入数据?
最佳答案
Mysqldump 是一个命令行程序,因此您必须编写一个 rake 作业来清除您的数据库。不过我同意 Mike B 的观点。 a railscast 中的“Fat Model, Skinny Controller”之类的一般建议是“Factories Not Fixtures”覆盖主题。工厂的优势在于,如果您愿意,它们可以在每次测试之间回滚数据库。 Fixture 也有不能很容易地表示关系的缺点,您必须手动创建和维护主键/外键。这有点痛苦。
如果我真的必须坚持使用固定装置,我就不会导入数据进行测试。测试您的数据库超出了您的应用程序的范围。如果你的应用程序真的依赖于那里的数据,那么把它放在 seeds.rb 中。但是应用程序数据不需要测试。例如,我真的不关心表 Users 中的内容,字段 first_name。如果我这样做了,我正在编写一个数据测试器?
此外,我希望您不要将生产数据转储到测试数据库中然后对其进行测试。这样做太过分了。
如果您仍想使用 mysqldump 和 fixtures,请编写 rake 任务或脚本来执行以下操作:
这本质上就是 factory_girl 之类的事务功能所做的。请注意,您会稍微重新发明轮子。
夹具很好用,您只需手动创建 PK/FK。因此,我通常只测试几行。除此之外,还要测试超出范围的数据库层。如果您想确保数据具有一定的质量,请在您的模型中使用“validates_blah_blah”添加数据库约束。
希望我没有像 Mike B 所说的那样“做点别的事情”。我同意这很烦人。但我也想提出建议。
https://stackoverflow.com/questions/3947542/