我发现在 Ruby on Rails 中使用固定装置有点乏味,部分原因是我需要在大多数迁移后手动更正它们。
有没有办法(插件?)我可以在运行迁移时修改我的固定装置?
我发现在 Ruby on Rails 中使用固定装置有点乏味,部分原因是我需要在大多数迁移后手动更正它们。
有没有办法(插件?)我可以在运行迁移时修改我的固定装置?
添加到上面 womble 的答案,您可以使用 topfunky 的 ar_fixures 插件从您的开发数据库生成固定装置:
http://github.com/topfunky/ar_fixtures/tree/master
在我看来,在rails 中仍然有一个小的、管理良好的固定装置的有效位置——就像模拟对象一样……但我们将把它留到另一天!
也值得考虑fixture-sets-for-rails插件,虽然我自己没有使用它: http ://thatswhatimtalkingabout.org/news/2006/8/31/fixture-sets-for-rails 似乎是一个合理的想法,尽管我对构建大量令人困惑的固定装置非常谨慎 - 当您的域模型发生变化时,您可能必须修复每一个固定装置。我可能会坚持使用模拟(这个插件看起来很旧,可能是在 mocha 出现之前编写的)。
Rails 社区中有很多关于使用或不使用固定装置的争论。就我个人而言,我使用的是factory_girl,当我对模型进行更改时,我会手动更新它。
如果您选择使用固定装置,我认为您应该手动更新它们,因为它们是您的测试套件的一部分,它必须检查您的代码是否按预期工作。
我很确定有一个插件可以将数据库的当前内容转储到固定文件中(尽管我不记得它的名字了)。处理此问题的一种方法是加载固定装置,运行迁移,然后使用此插件将固定装置转储出去。
另一方面,如果您的数据库模式发生了变化,那么您的测试条件、极端情况和约束现在可能会有所不同,因此手动检查您的固定装置和测试用例可能不是一个坏主意。
Factory Girl 或 Machinist 都是固定装置的绝佳替代品,您只需要定义模型的有效实例,然后根据需要使用任意数量或尽可能少的数量。我使用的是 Machinist,但开始使用 Factory Girl,因为它对模型之间的关联有更好的支持。