Rspec之前(:each)使用factorygirl创建模型不工作



我使用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

最新更新