我正在为 rails 视图编写测试,可以说视图类似于:
显示.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
现在我想测试它生成的 json 并且只是对该id
领域感兴趣。
如果我的测试代码写成这样:
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
我不确定为什么以及如何解决它?或者有没有其他方法让我只提供我感兴趣的领域?