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
答案 0 :(得分:1)
您已在bills1
数据块中定义let
,但您正在访问@bills1
数据块中的it
。此外,您已使用subject
调用访问了隐式should
。虽然RSpec
已建议迁移到新的expect
语法,但如果您要使用should
,则它是您正在评估的对象上的一种方法(例如bills1.name.should
而不是bills1.name should
{1}})。
答案 1 :(得分:1)
在let
块中定义类似的内容将为您在本地范围内的测试创建它们,即。 bills1
不是@bills1
。