所以我需要测试一下。部分是通过特定的动作呈现的,它类似于facebook中的消息框。我的测试看起来像这样:
describe 'partials/_partial.js.erb' do
it 'displays stuff' do
render
end
end
我运行它,我知道它做我想要的,因为我马上得到
Failure/Error: if @items.count > 0
ActionView::Template::Error:
undefined method `count' for nil:NilClass
我不需要听到在部分中使用实例变量是一种不好的做法,它已经存在并且我需要使用它。那么如何在这里设置@items ...?
更新:
控制器动作如下所示:
def controller_method
@items = items_method
render_version(:partial => "partials/_partial.js.erb")
end
答案 0 :(得分:2)
看起来你正在使用rspec。在这种情况下,您在测试期间定义的任何实例变量都可用于您的视图(无论它是否是部分的)。
describe "users/_messages" do
before(:each) do
# This is available in your view.
@items = []
end
it "renders without error when @items is empty" do
# Will pass, @items is available
expect { render }.to_not raise_error
end
it "shows a count of how many messages there are" do
# You can modify it before rendering
@items << Message.new
render
expect(rendered).to have_content "You have 1 message"
end
end