私は、最終的にAPIのJSONデータを提供するjbuilderを使用して構築したテンプレートをテストするためのRSpecテストを作成しようとしています。コントローラの機能をテストするテストはたくさん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
テンプレートにオブジェクトを割り当て/作成/渡す方法に関係なく、失敗します。私が間違っているかもしれない何か考えはありますか?