【发布时间】:2014-08-10 20:18:21
【问题描述】:
我在控制器测试我创建的 Rails 引擎时遇到了一些麻烦。我遇到的问题是我似乎无法让 rspec 使用 main_app 路由。
例如,我正在编写以下控制器测试。如果不是 main_app.root_path 返回 nil,测试就会通过。
我的控制器规范中的代码是:
context "successful session creation" do
let(:user) {FactoryGirl.create :user}
it 'sets user id session' do
get :create, use_route: :authenticatable, email: user.email, password: 'password'
expect(session[:user_id]).to eq user.id
end
end
end
在我的控制器中,我有:
def create
user = Authenticatable::User.find_by(email: params[:email])
if user && user.login(params[:password])
session[:user_id] = user.id
redirect_to main_app.root_path, notice: "You are signed in!"
else
flash[:error] = 'Invalid email or password'
redirect_to authenticatable.sign_in_path
end
end
我得到的 rspec 失败是:
NameError:
undefined local variable or method `main_app' for #<RSpec::ExampleGroups::AuthenticatableSessionsController::GETCreate:0x007f9f583d6f18>
我怎样才能让 rspec 使用我可用的所有路由助手。
我的 rails_helper.rb 文件如下:
ENV["RAILS_ENV"] ||= 'test'
require 'spec_helper'
require File.expand_path("../dummy/config/environment.rb", __FILE__)
require 'rspec/rails'
require 'factory_girl_rails'
require 'shoulda-matchers'
require 'pry'
require 'database_cleaner'
Rails.backtrace_cleaner.remove_silencers!
# Load support files
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
提前感谢您的任何帮助或建议。
【问题讨论】:
标签: ruby-on-rails rspec rails-engines