Ruby on rails 在制造商gem和rspec中传递变量

Ruby on rails 在制造商gem和rspec中传递变量,ruby-on-rails,rspec,fabrication-gem,Ruby On Rails,Rspec,Fabrication Gem,我如何通过在rspec中传递用作瞬态的变量来创建用户?我做错了什么 控制器测试规范rb describe "GET index" do context "with admin user_role" do before(:each) do set_current_admin todo_list1 = Fabricate(:todo_list) todo_list2 = Fabricate(:todo_list) get :index

我如何通过在rspec中传递用作瞬态的变量来创建用户?我做错了什么

控制器测试规范rb

describe "GET index" do
  context "with admin user_role" do
    before(:each) do
      set_current_admin
      todo_list1 = Fabricate(:todo_list)
      todo_list2 = Fabricate(:todo_list)
      get :index
    end
    it "redirects to the todo lists path" do
      expect(response).to redirect_to todo_lists_path
    end
  end
end
/support/macros.rb

def set_current_admin(user=nil)
  session[:user_id] = (user || Fabricate(:user, role: "admin")).id
end
制造商

  # user_fabricator.rb
  Fabricator(:user) do
    email {Faker::Internet.email}
    password 'password'
    first_name {Faker::Name.first_name}
    last_name {Faker::Name.last_name}
    transient :role  
    user_role {Fabricate(:user_role, role: :role)}
  end

  # user_role_fabricator.rb
  Fabricator(:user_role) do
    role
  end
所有处理过的值(包括瞬态)都可以通过在每个字段制作时传递到每个字段中的attrs散列来获得。我修改了你们的制造商,使之符合你们的期望

我将
:user\u role
中的角色字段默认设置为“member”。您使用的方式将尝试扩展到使用另一个名为
角色
的制造商,我认为这不是您想要的

# user_fabricator.rb
Fabricator(:user) do
  email {Faker::Internet.email}
  password 'password'
  first_name {Faker::Name.first_name}
  last_name {Faker::Name.last_name}
  transient :role  
  user_role { |attrs| Fabricate(:user_role, role: attrs[:role]) }
end

# user_role_fabricator.rb
Fabricator(:user_role) do
  role 'member'
end
所有处理过的值(包括瞬态)都可以通过在每个字段制作时传递到每个字段中的attrs散列来获得。我修改了你们的制造商,使之符合你们的期望

我将
:user\u role
中的角色字段默认设置为“member”。您使用的方式将尝试扩展到使用另一个名为
角色
的制造商,我认为这不是您想要的

# user_fabricator.rb
Fabricator(:user) do
  email {Faker::Internet.email}
  password 'password'
  first_name {Faker::Name.first_name}
  last_name {Faker::Name.last_name}
  transient :role  
  user_role { |attrs| Fabricate(:user_role, role: attrs[:role]) }
end

# user_role_fabricator.rb
Fabricator(:user_role) do
  role 'member'
end
所有处理过的值(包括瞬态)都可以通过在每个字段制作时传递到每个字段中的attrs散列来获得。我修改了你们的制造商,使之符合你们的期望

我将
:user\u role
中的角色字段默认设置为“member”。您使用的方式将尝试扩展到使用另一个名为
角色
的制造商,我认为这不是您想要的

# user_fabricator.rb
Fabricator(:user) do
  email {Faker::Internet.email}
  password 'password'
  first_name {Faker::Name.first_name}
  last_name {Faker::Name.last_name}
  transient :role  
  user_role { |attrs| Fabricate(:user_role, role: attrs[:role]) }
end

# user_role_fabricator.rb
Fabricator(:user_role) do
  role 'member'
end
所有处理过的值(包括瞬态)都可以通过在每个字段制作时传递到每个字段中的attrs散列来获得。我修改了你们的制造商,使之符合你们的期望

我将
:user\u role
中的角色字段默认设置为“member”。您使用的方式将尝试扩展到使用另一个名为
角色
的制造商,我认为这不是您想要的

# user_fabricator.rb
Fabricator(:user) do
  email {Faker::Internet.email}
  password 'password'
  first_name {Faker::Name.first_name}
  last_name {Faker::Name.last_name}
  transient :role  
  user_role { |attrs| Fabricate(:user_role, role: attrs[:role]) }
end

# user_role_fabricator.rb
Fabricator(:user_role) do
  role 'member'
end

你能不能先告诉我们你观察到的与你期望的不同之处?(你怎么知道它“出了问题”(因为你还没有告诉我们),你期望会发生什么呢?你能从告诉我们你观察到的与你期望的不同开始吗?(你怎么知道它“出了问题”(因为你还没有告诉我们),你期望会发生什么呢?你能从告诉我们你观察到的与你期望的不同开始吗?(你怎么知道它“出了问题”(因为你还没有告诉我们),你期望会发生什么呢?你能从告诉我们你观察到的与你期望的不同开始吗?(你怎么知道它“出了问题”(因为你还没有告诉我们),你预计会发生什么?