在测试中忽略before_validation回调

时间:2013-10-08 18:40:02

标签: ruby-on-rails rspec

我有一个带有before_validation回调的模型“声明”,它将新声明的状态设置为“打开”。这很好,但在我的规范中,我想快速测试几个状态。所以我创建了一个这样的声明:

let!(:declaration) { create(:declaration, status: "approved", user: employee) }

不幸的是,before_validation每次都将状态设置为“打开”。 在我的测试中处理这个问题的最佳方法是什么?

我当然可以完成整个流程,因此声明会进入正确的状态(这是一个功能规范),但这需要花费很多时间,因为它很慢。我测试的这一部分的目的是快速检查一堆不同的状态。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我建议您在验证前修改。

听起来你实际上是这样做的:

self.status = "open"

也许你应该做

self.status ||= "open"

因此,它会为每个新创建设置打开状态,但仅限于未指定状态时。

答案 1 :(得分:0)

John,我在构建之后使用了FactoryGirl的skip_callback方法来跳过过去的验证,但是在创建之前。这是帮助我的Stack Overflow:Skip callbacks on Factory Girl and Rspec