【发布时间】:2012-03-15 00:40:19
【问题描述】:
tl;dr 验证在浏览器中有效,但使用 rspec 失败。我不知道为什么。
回答:我试图批量分配 user_id,但 user_id 不可批量分配。在控制器中正确构建它,在 rspec 中不正确。
这是我的列表模型。每个列表都有一个价格和一个与之关联的 user_id。
在我的“listing”模型中,我有“price”。
在我的“用户”模型中,我有一个名为“vip”的布尔属性。
“价格”的最大值取决于用户的 VIP 状态。如果是VIP,最高价格为400。否则,最高价格为200。
我编写了一个方法“listing_ceiling”,它应该根据用户的 VIP 等级返回正确的最大值。
它可以在浏览器中运行,但是当我运行测试时,rspec 返回错误:
undefined method `vip?' for nil:NilClass
我不确定我在哪里做不到。它在浏览器中正常工作,但在使用 rspec 测试时失败。代码如下:
validates_numericality_of :price, :presence => true, :greater_than => 10, :less_than => :listing_ceiling
def listing_ceiling
if self.user.vip?
400.01
else
200.01
end
end
任何想法为什么会以这种方式失败?
【问题讨论】:
-
当 rspec 运行时,它使用一个测试数据库。你确定那里有用户吗?
标签: ruby-on-rails rspec