rspec before(:each) 使用 factorygirl 创建模型不起作用 [英] rspec before(:each) using factorygirl to create model not working

查看:37
本文介绍了rspec before(:each) 使用 factorygirl 创建模型不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 rspec 来测试我的模型方法.一切都很顺利,但突然间工厂女工构建不起作用.这是我的代码:

I'm using rspec to test my model methods. Everything is going fine but all of a sudden factorygirl build isn't working. here's my code:

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 都设置正确并且可以工作,但是当我在这里时:

all the other @user are set correctly and work but when i get down here:

它应该返回指定年份内已付发票的正确数量"用户 = @用户调试器结束

it "should return the correct count of paid invoices in the specified year" do user = @user debugger end

factorygirl.build 不起作用.我尝试将其直接放入特定测试中的每个人...但它不会设置为@user.我错过了什么?这是错误:

the factorygirl.build just doesn't work. I tried putting it everyone including directly in the specific test...but it just won't set to @user. what am i missing? this is the error:

NameError Exception: undefined local variable or method `user' for #<RSpec::Core::Example:0x007fc9ec7d4890>

当我尝试查看用户时会发生这种情况,因为@user 为零

which happens when i try to look at user because @user is nil

推荐答案

事实证明用户实际上并不存在于测试用例中,除非你真的尝试用它测试某些东西......这很奇怪.

Turns out user isn't actually present in a test case unless you actually try to test something with it...which is very weird.

  it "should return the user's first name" do
    user.first_name.should == "User"
  end

这有用户在场,但这个:

this has user present but this:

  it "should return the user's first name" do
    debugger
  end

在调试器显示 user = nil 后查看控制台.

looking at the console after debugger shows user = nil here.

这篇关于rspec before(:each) 使用 factorygirl 创建模型不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆