我正在寫一個軌道視圖測試,讓說的觀點是這樣的:如何模擬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
現在我想測試它生成的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
我不知道爲什麼以及如何解決它?或者還有什麼其他方式可以讓我提供我感興趣的領域?