我正在使用可安装引擎将一个大型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创建用户?该模型位于安装引擎的父应用程序中,因此如何从我的引擎规范中访问它?
答案 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