让方法无法正确生成变量

时间:2013-09-19 00:51:40

标签: ruby-on-rails ruby rspec ruby-on-rails-4

let方法应为每个示例创建一个名为“Bills 1”的bills1变量。相反,我收到一个错误:

  1) BillsHelper should be valid
 Failure/Error: @bills1.name should eq('Bills 1')

   expected: "Bills 1"
        got: BillsHelper

   (compared using ==)

   Diff:
   @@ -1,2 +1,2 @@
   -"Bills 1"
   +BillsHelper
 # ./spec/helpers/bills_helper_spec.rb:17:in `block (2 levels) in <top (required)>'

我的助手测试:

describe BillsHelper do
let(:bills1) { Bill.create(name: 'Bills 1', amount: 1.00) }

it "should be valid" do
    @bills1.name should eq('Bills 1')
end

it "#bill_total" do
    expect(bill_total).to eq(2.00)
end 
end

2 个答案:

答案 0 :(得分:1)

您已在bills1数据块中定义let,但您正在访问@bills1数据块中的it。此外,您已使用subject调用访问了隐式should。虽然RSpec已建议迁移到新的expect语法,但如果您要使用should,则它是您正在评估的对象上的一种方法(例如bills1.name.should而不是bills1.name should {1}})。

答案 1 :(得分:1)

let块中定义类似的内容将为您在本地范围内的测试创建它们,即。 bills1不是@bills1