0

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
4

2 回答 2

1

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

于 2013-09-19T01:29:50.373 回答
1

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

于 2013-09-19T01:30:27.140 回答