rspec before(:each) 使用 factorygirl 创建模型不起作用 [英] rspec before(:each) using factorygirl to create model not working
问题描述
我正在使用 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屋!