Factory Girl不符合集成规范

时间:2014-01-01 15:59:27

标签: ruby-on-rails capybara factory-bot

这是我的集成规范。我想在全球范围内定义这些用户,以便我可以在所有规范的期望中基于它们制定期望。但是,这样做意味着变量@user_0,其余变量在预期内不可用。

注意我在第一个期望打印哈希时得到了ap @user_0。它返回零。

第一个问题是,如何在集成规范中创建全局可用变量?

值得注意的是,如果我build期望中的变量,一切正常,那就是当变量构建在期望之外时。

我认为这是一个错误吗?我的意思是我肯定要写出使用其他规格中定义的用户的期望?或者每个规格都是一种自包含的东西,如果启用过渡装置,测试数据库会在每个期望之间消失吗?奇怪的是,默认情况下这些实例变量没有作用域,好像它是故意完成的。

require 'spec_helper'
require 'factory_girl'

@user_0 = FactoryGirl.build(:user_0)
@user_1 = FactoryGirl.build(:user_1)
@user_2 = FactoryGirl.build(:user_2)
@user_3 = FactoryGirl.build(:user_3)

describe "foo", js: true do        
    it "can create a user" do
        ap @user_0 #=> nil
   end
end

1 个答案:

答案 0 :(得分:0)

添加对:before方法的调用以在每次 it 操作之前评估指定的块:

require 'spec_helper'
require 'factory_girl'

describe "foo", js: true do        
   before :each do
      @user_0 = FactoryGirl.build(:user_0)
      @user_1 = FactoryGirl.build(:user_1)
      @user_2 = FactoryGirl.build(:user_2)
      @user_3 = FactoryGirl.build(:user_3)
   end

   it "can create a user" do
      ap @user_0 #=> nil
   end
end

确保您的用户工厂已正确写入。