固定装置问题
看看你做了什么,
locations(:loc_paris)
将找到中描述的记录
位置.yml
但是
locations(:loc_paris).retailer
不会。
Rails关联的工作方式如下:
地点(:loc_paris)。零售商
将查找
retailer
具有
retailer_id
在中提到
地点(:loc_Paris)
记录。在你的情况下
retailer_id: 399879241
没有
reseller
用这个
id
这就是它回来的原因
Nil
.
解决方案:
描述这样的装置:
#spec/fixtures/locations.yml
loc_paris:
retailer_id: 1
name: "Paris"
nickname: "paris"
loc_washington:
retailer_id: 2
name: "Washington"
nickname: "washington"
#spec/fixtures/retailers.yml
ret_europe:
id: 1
name: "AcmeCo France"
nickname: "acmecofr"
currency_type: "EUR"
ret_usa:
id: 2
name: "AcmeCo USA"
nickname: "acmecousa"
currency_type: "USD"
现在,
地点(:loc_paris)。零售商
将寻找零售商
零售商ID
在中提到
地点(:loc_Paris)
记录,即
retailer_id: 1
还有一个经销商
ret_europe
用这个
身份证件
.
问题已解决
当你运行rspec时,首先
rspec
将这些设备保存到数据库中,并自动生成
身份证件
值(如果
身份证件
这就是为什么
身份证件
和
reseller_id
是一些随机值吗?
。如果你不想
身份证件
属于
locations.yml
记录为某个随机值,您可以这样自己提供:
loc_paris:
id: 1
retailer_id: 1
name: "Paris"
nickname: "paris"
提示:
AS
RSPEC
磨合
test
环境(在
应用程序/规范/轨道助手.rb
)正如我之前提到的,无论你何时跑步
RSPEC
,首先它将设备保存到数据库中。如果你的
local
和
测试
数据库相同,fixture将替换数据库的实际数据库记录。在你的情况下,记录
locations
和
resellers
表格记录将被完全删除,并用这些固定装置替换。因此,为
测试
环境。
希望这个答案有帮助