这是我的集成规范。我想在全球范围内定义这些用户,以便我可以在所有规范的期望中基于它们制定期望。但是,这样做意味着变量@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
答案 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
确保您的用户工厂已正确写入。