Rspec - 测试模型方法 - 错误

时间:2015-08-11 08:38:14

标签: ruby-on-rails rspec

我正在尝试创建RSpec测试以测试下面的暂停代码。

我的代码暂停了一个或多个角色。

因此,一个Item有几个角色,每个角色都可以通过传入角色ID来挂起suspend_roles方法。

它还将Item子状态设置为" Suspended"如果所有角色都被暂停。

此代码位于Item模型中:

def suspend_roles (role_ids)

        role_ids.each do |role_id|
          self.suspensions.create!(role_id: role_id, create_user_id: User.current_user.id)
        end

        if role_ids.count == Role.ids.count
          self.lifecycle_sub_status = "Suspended"
         self.save

        elsif role_ids.count < Role.ids.count && role_ids.count > 1
          self.lifecycle_sub_status = "Partial"
          self.save

        end
      end

试验:

it 'suspends all roles' do

      test_item = create :item
      test_item.suspend_roles(Role.ids)
      expect(test_item.suspensions.count).to eq (Role.ids.count)
      expect(test_item.lifecycle_sub_status).to eq "Suspended"
    end

现在出现问题:

  1. Role.ids.count返回nil,即使我运行实际应用程序时它会返回id的数量。

  2. User.current_user.id也返回nil

  3. 这是Application控制器中current_user的代码:

      def current_user
        if session[:user_id]
          @current_user ||= User.find(session[:user_id])
          return @current_user
        end
      end
    

    在我的测试中,我有:

    let(:user) { create :user }
    

    我错过了什么吗?

0 个答案:

没有答案