Railsビューのテストを書いています。ビューが次のようなものだとしましょう:
show.json.rep
r.element :user, @user do |u|
r.element :id, u.id
r.element :somefield1, u.somefield1
// a lot of fields here
r.element :somefield100, u.somefield100
end
id
ここで、それが生成する json をテストし、フィールドに興味を持ちたいと思います。
私のテストコードが次のように書かれている場合:
describe "show.json.rep" do
it "will generate json with correct id" do
assign(:user, mock(:user, :id=>111))
render
puts "######### generate json:"
puts rendered
...
end
end
次のようなエラーが報告されます。
Failure/Error: render
ActionView::Template::Error:
Mock :user received unexpected message :somefield1 with (no args)
somefieldX
興味のないすべてのフィールドをモックしたくないので、次のことを試しましたas_null_object
:
describe "show.json.rep" do
it "will generate json with correct id" do
assign(:user, mock(:user, :id=>111).as_null_object)
render
puts "######### generate json:"
puts rendered
...
end
end
今回は、そのエラーは報告されませんが、奇妙なことに、rendered
値はnull
!!
######### generate json:
null
なぜ、どのように修正するのかわからないのですか?または、興味のある分野を提供できるようにする他の方法はありますか?