1

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

なぜ、どのように修正するのかわからないのですか?または、興味のある分野を提供できるようにする他の方法はありますか?

4

1 に答える 1