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