我有一个带有before_validation
回调的模型“声明”,它将新声明的状态设置为“打开”。这很好,但在我的规范中,我想快速测试几个状态。所以我创建了一个这样的声明:
let!(:declaration) { create(:declaration, status: "approved", user: employee) }
不幸的是,before_validation
每次都将状态设置为“打开”。
在我的测试中处理这个问题的最佳方法是什么?
我当然可以完成整个流程,因此声明会进入正确的状态(这是一个功能规范),但这需要花费很多时间,因为它很慢。我测试的这一部分的目的是快速检查一堆不同的状态。有什么建议吗?
答案 0 :(得分:0)
我建议您在验证前修改。
听起来你实际上是这样做的:
self.status = "open"
也许你应该做
self.status ||= "open"
因此,它会为每个新创建设置打开状态,但仅限于未指定状态时。
答案 1 :(得分:0)
John,我在构建之后使用了FactoryGirl的skip_callback方法来跳过过去的验证,但是在创建之前。这是帮助我的Stack Overflow:Skip callbacks on Factory Girl and Rspec