Ruby on rails 4 Rails Rspec默认视图测试无法分配模型存根

Ruby on rails 4 Rails Rspec默认视图测试无法分配模型存根,ruby-on-rails-4,rspec2,Ruby On Rails 4,Rspec2,我试图理解构建脚手架时生成的Rspec默认视图规范,以及它们为什么不工作。 我正在使用; Rails 4.0.2 Rspec 2.14.7 spec/views/line_items/new.html.erb_spec.rb require 'spec_helper' describe "line_items/new" do before(:each) do assign(:line_item, stub_model(LineItem, :product =>

我试图理解构建脚手架时生成的Rspec默认视图规范,以及它们为什么不工作。 我正在使用; Rails 4.0.2 Rspec 2.14.7

spec/views/line_items/new.html.erb_spec.rb

require 'spec_helper'

describe "line_items/new" do
  before(:each) do
    assign(:line_item, stub_model(LineItem,
      :product => nil,
      :cart => nil
    ).as_new_record)
  end

  it "renders new line_item form" do
    render

    assert_select "form[action=?][method=?]", line_items_path, "post" do
      assert_select "input#line_item_product[name=?]", "line_item[product]"
      assert_select "input#line_item_cart[name=?]", "line_item[cart]"
    end
  end
end
Rspec似乎无法识别第_行项目。LineItem上没有可阻止创建新项的验证。 在索引规范中,赋值确实会创建有效的行\u项,但我只能通过@u封装的\u赋值实例变量访问它们

spec/views/line_items/index.html.erb_spec.rb

require 'spec_helper'

describe "line_items/index" do
  before(:each) do
    assign(:line_items, [
      stub_model(LineItem,
        :product => nil,
        :cart => nil
      ),
      stub_model(LineItem,
        :product => nil,
        :cart => nil
      )
    ])
  end

  it "renders a list of line_items" do
    render
    line_item = @_encapsulated_assigns[:line_items].first
    assert_select "tr>td>a[href=?]", line_item_path(line_item)
    assert_select "tr>td>a[href=#{line_item_path(line_item)}]", text: "Show"
  end
end
Rspec 2.14文档中的示例不包括资产选择或分配。作为新记录,也不直接访问创建的任何存根。
感谢您的帮助:)

您所说的“不认识”是什么意思?测试中没有对
行项目
变量/方法的引用。您遇到了什么错误?我以为assign line\u item、stub\u模型正在创建一个可调用对象。assert\u select语句似乎依赖于这样一个事实,即存在一行\u项[product]和一行\u项[cart]。当我在测试中放置一个puts行项目时,它会显示“未定义的局部变量或方法‘行项目’”。
assert\u select
的参数是CSS选择器,而不是Ruby表达式。好的,谢谢,现在这是有意义的。