使用current_user进行功能测试Rails引擎

时间:2014-04-14 13:08:16

标签: ruby-on-rails

我正在使用可安装引擎将一个大型Rails应用程序分成几部分。

我的引擎访问控制器中的当前用户,如下所示:

require_dependency "lesson_notes/application_controller"

module LessonNotes
  class NotesController < ApplicationController

    def index
      @notes = current_user.notes
    end

  end
end

在功能规范中,我通常会创建一个使用FactoryGirl的用户,然后将用户登录 - 如下所示:

feature "Notes page" do
  let(:user) { create(:user) }

  before do
    login_as user
    visit "/lesson_notes"

  end
end

但是,在引擎功能规范中,如何使用FactoryGirl创建用户?该模型位于安装引擎的父应用程序中,因此如何从我的引擎规范中访问它?

2 个答案:

答案 0 :(得分:1)

从我的角度来看,引擎是与主应用程序分开的盒子,它将被安装在任何应用程序中,因此它的测试用例也应该独立于那些。

可能你应该模拟用户模型来测试你的引擎的功能,而不是从工厂创建它。

答案 1 :(得分:1)

我可以通过这样写我的工厂来访问父应用程序的模型:

FactoryGirl.define do
  factory :user, class: "::User" do # Notice the way User is namespaced
    email "test@test.com"
    password "asterisk"
    first_name "James"
    last_name "Baldwin"
    association :user_type, factory: :user_type
  end
end