【发布时间】:2020-02-16 13:49:27
【问题描述】:
我是 rails rspec 测试的新手,我目前需要创建嵌套数据结构并使用 factorybot 获取数据。虽然它适用于控制器测试。它不允许我做简单的 Factorybot.create(:model)。 我已经搜索了很多。但似乎没有找到或理解解决方案。 所以,我需要创建的数据结构是这样的:
"email":"",
"name":"",
"personalDetail":{
"height":"",
"weight":"",
"color":""
}
"address":{
"street":"",
"postal_code":""
},
"experience":""
}
(**注意。这与关联无关,控制器中的数据以这种方式接收。不涉及任何关系) 虽然我目前正在使用
来实现这种结构initialize_with{{
"email":"",
"name":"",
"personalDetail":{
"height":"",
"weight":"",
"color":""
}
"address":{
"street":"",
"postal_code":""
},
"experience":""
}}
它适用于控制器测试,但我无法在测试时更改键值,例如:
FactoryBot.create(:model, name:"xyz")
,也不适用于 FactoryBot.create(:model),这给了我
的错误** Api::V1::someController 获取#index 失败/错误:FactoryBot.create(:model)
NoMethodError:
undefined method `save!' for #<Hash:0x0000563db7324060>
# ./spec/controllers/api/v1/somecontroller_spec.rb:11:in `block (2 levels) in <main>'
# -e:1:in `<main>' **
所以,我的问题是如何使用 FactoryBot 常用方法生成此结构。即
factory :job_application do
field1 { "" }
field2 { "" }
end
这样我就可以正常使用它了。
【问题讨论】:
-
你想创建一个文字哈希吗?
-
不,我知道我做错了什么,感谢您的评论。但仍然无法编写测试,我将不得不再看一些。
标签: ruby-on-rails rspec factory-bot