2

我创建了一个观察者,它观察所有模型以更改数据库。这个审计观察者本身工作得很好,但它破坏了测试套件。我不清楚为什么观察者会导致我所有的测试都失败。如果你知道,请告诉我。(顺便说一下,我正在运行 Rails 3.2.14。)

但更重要的是,我正在寻找一种方法让这个观察者能够很好地使用测试套件。我正在考虑在观察者类可以在运行时评估的环境配置层上添加某种标志。然后,我只需将开发和测试环境的标志设置为“false”,将生产环境的标志设置为 true。但我不知道我将如何去做。有什么建议么?

我没有在我的 spec_helper 中禁用观察者的选项,因为大量的测试实际上并没有加载 spec_helper。大多数这些测试实际上并没有对数据库进行更改,但假设它们可以而且我不想挖掘数百个测试文件来重构它们。

因此,我正在寻找一种方法来禁用或使我的观察者无法在整个测试环境中工作。配置层似乎是执行此操作的合适位置,但我不知道该怎么做。我很想听听有关如何完成此任务的任何建议。

更新:相关帖子更详细地说明了我遇到的问题:https ://stackoverflow.com/questions/18321693/how-to-disable-an-activerecord-observer-in-a-rails-engine?noredirect= 1#comment26888767_18321693

4

1 回答 1

1

我会说:

  • 要么你在所有配置文件中声明观察者,但测试文件

  • 或者你有条件地加载它:config.active_record.observers = your_list if Rails.env.test?

顺便说一句,你不需要指定它似乎很奇怪。无论如何,我知道你不能在那里总结你的应用程序逻辑,只是好奇。

于 2013-08-18T20:09:04.160 回答