2

我发现在 Ruby on Rails 中使用固定装置有点乏味,部分原因是我需要在大多数迁移后手动更正它们。

有没有办法(插件?)我可以在运行迁移时修改我的固定装置?

4

5 回答 5

2

添加到上面 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 出现之前编写的)。

于 2009-02-17T00:19:17.053 回答
1

Rails 社区中有很多关于使用或不使用固定装置的争论。就我个人而言,我使用的是factory_girl,当我对模型进行更改时,我会手动更新它。

如果您选择使用固定装置,我认为您应该手动更新它们,因为它们是您的测试套件的一部分,它必须检查您的代码是否按预期工作。

于 2009-02-16T23:48:03.557 回答
0

我很确定有一个插件可以将数据库的当前内容转储到固定文件中(尽管我不记得它的名字了)。处理此问题的一种方法是加载固定装置,运行迁移,然后使用此插件将固定装置转储出去。

另一方面,如果您的数据库模式发生了变化,那么您的测试条件、极端情况和约束现在可能会有所不同,因此手动检查您的固定装置和测试用例可能不是一个坏主意。

于 2009-02-16T22:08:49.847 回答
0

我也觉得固定装置有点乏味,这就是为什么我尽量不使用它们。

相反,我使用mocks。查看rspecmocha

于 2009-02-16T22:10:46.787 回答
0

Factory Girl 或 Machinist 都是固定装置的绝佳替代品,您只需要定义模型的有效实例,然后根据需要使用任意数量或尽可能少的数量。我使用的是 Machinist,但开始使用 Factory Girl,因为它对模型之间的关联有更好的支持。

于 2009-02-19T06:04:45.350 回答