我正在尝试编写 RSpec 测试来测试我使用 jbuilder 构建的模板,该模板最终为我的 API 提供 JSON 数据。我有许多测试spec/controllers
我的控制器功能的测试,但我也希望测试我在我的 jbuilder 视图中呈现正确的 JSON 字段。这是我设置的示例:
# app/views/api/v1/users/create.json.jbuilder
json.first_name user.first_name
# spec/views/api/v1/users/create.json.jbuilder_spec.rb
require 'spec_helper'
describe "api/v1/users/create.json.jbuilder" do
it "renders first_name" do
assign( :user, User.create( :first_name => "Bob" ) )
render
hash = JSON.parse( rendered )
hash.has_json_node( :first_name ).with( "Bob" )
end
end
我运行时得到rspec spec/views/api/v1/users/create.json.jbuilder_spec.rb
的是以下错误
Failures:
1) api/v1/users/create.json.jbuilder render a user
Failure/Error: render
ActionView::Template::Error:
undefined local variable or method `user' for #<#<Class:0x007fa2911c3118>:0x007fa29105f2b8>
# ./app/views/api/v1/users/create.json.jbuilder:1:in `_app_views_api_v__users_create_json_jbuilder___3806288263594986646_70168098229960'
# ./spec/views/api/v1/users/create.json.jbulder_spec.rb:6:in `block (2 levels) in <top (required)>'
无论我如何尝试将user
对象分配/创建/传递给模板,它都会失败。知道我可能做错了什么吗?