我使用rspec来测试我的模型方法。一切都很顺利,但突然间工厂女工造的东西坏了。下面是我的代码:
require File.dirname(__FILE__) + '/../spec_helper'
describe User do
describe 'creation' do
before(:each) do
@user = FactoryGirl.build(:user)
end
it 'is invalid without an email address' do
user = @user
user.email = nil
user.should_not be_valid
end
it 'is invalid without a password' do
user = @user
user.password = nil
user.should_not be_valid
end
it 'is invalid with an invalid email' do
user = @user
user.email = "email@invalid"
user.should_not be_valid
end
it 'is valid with a valid email and password' do
user = @user
user.should be_valid
end
end
describe "method" do
before(:each) do
@user = FactoryGirl.build(:user)
end
context "first_name" do
it "should return the user's first name" do
user = @user
user.first_name.should == "User"
end
end
context "count_of_invoices_by_year" do
# @todo not sure how to check these since .count doesn't work
it "should return the correct count of all invoices in the specified year" do
# there are two invoices in 2013
# user = @user
# user.count_of_invoices_by_year("2013", :total).should == 2
end
it "should return the correct count of paid invoices in the specified year" do
user = @user
debugger
end
it "should return the correct count of sent invoices in the specified year" do
end
end
context "sum_of_invoices_by_year" do
it "should return the sum of the grand_totals of each of the invoices in the specified year" do
# user.sum_of_invoices_by_year("2013", :total).should ==
end
it "should return the sum of the grand_totals of each of the paid invoices in the specified year" do
end
it "should return the sum of the grand_totals of each of the sent invoices in the specified year" do
end
end
end
end
所有其他的@user都设置正确并且工作但是当我到下面这里:
it "应返回指定年份中已付发票的正确计数"做User = @user调试器
结束factorygirl。构建是行不通的。我试着把它放在每个人身上,包括直接在特定的测试中…但它不会设置为@user。我错过了什么?这是错误:
NameError Exception: undefined local variable or method `user' for #<RSpec::Core::Example:0x007fc9ec7d4890>
当我试图查看user时发生因为@user是nil
事实证明,用户实际上并不存在于测试用例中,除非您实际尝试使用它进行测试…这很奇怪。
it "should return the user's first name" do
user.first_name.should == "User"
end
this有用户在场,但是this:
it "should return the user's first name" do
debugger
end
调试后查看控制台,这里显示user = nil