1

私のユーザー モデルでuserは、before_createコールバックですべてのユーザーに のロールが割り当てられます。そのため、いくつかのテストで使用する管理者ユーザーを作成するのに多くの問題があります。これが私が試したものですが、うまくいきません:

require 'spec_helper'

describe "Exercises" do
  describe "GET /Exercises" do
    it "gives the expected status code." do
        sign_in_as_valid_user
        @user.role = 'admin'

      get exercises_path
      response.status.should be(200)
    end

完全を期すために、呼び出されるメソッドは次のとおりです。

module ValidUserRequestHelper
    def sign_in_as_valid_user
        FactoryGirl.create :program
        @user ||= FactoryGirl.create :user

        post_via_redirect user_session_path, 'user[email]' => @user.email, 'user[password]' => @user.password
    end
end

そして工場:

FactoryGirl.define do
  sequence :email do |n|
    "test#{n}@vitogo.com"
  end

  factory :user do
    email           
    password                            '12345678'
    password_confirmation '12345678'
    goal_id                             1
    experience_level_id     1
    gender                              'Female'
  end
end

重要な特定のテストで役割を変更しようとしているだけです。

これを行う方法はありますか?それは私を夢中にさせてきました。前もって感謝します!

4

2 に答える 2

4

次に、ユーザー ファクトリを編集して、ユーザー ファクトリから継承した管理ファクトリを作成し、次のafter(:create)ようなコールバックで管理者ロールを割り当てました。

factory :user do
    email           
    password              '12345678'
    password_confirmation '12345678'
    gender                'Male'
    factory :admin do
      after(:create) { |user| user.role = 'admin'; user.save }
    end
  end
于 2013-10-09T16:13:45.293 に答える