0

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

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

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

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

4

2 回答 2

0

约翰,我过去使用 factoryGirl 的 skip_callback 方法在构建之后跳过验证,但就在创建之前。这是帮助我的堆栈溢出:Skip callbacks on Factory Girl and Rspec

于 2013-10-08T18:54:17.033 回答
0

我建议你在验证之前修改你的。

听起来你实际上正在这样做:

self.status = "open"

也许你应该做

self.status ||= "open"

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

于 2013-10-08T18:49:46.543 回答