我在我的课程控制器的控制器测试中遇到了问题。似乎devise没有正确地登录我的用户。所有为该控制器生成的控制器测试都失败了。
我使用Factory-girl在users.rb中创建我的用户,如下所示...
FactoryGirl.define do
factory :user do
sequence :email do |n|
"test#{n}@email.com"
end
password "password"
password_confirmation "password"
end
end
然后在我的courses_controller_spec.rb文件中,我按照以下方式模拟登录..
require 'spec_helper'
describe CoursesController do
include Devise::TestHelpers
before(:each) do
#@request.env["devise.mapping"] = Devise.mappings[:user]
user = Factory.create(:user)
user.toggle!(:admin)
sign_in user
end
describe "DELETE destroy" do
it "redirects to the courses list" do
course = Factory.create(:course)
delete :destroy, {:id => course.to_param}, valid_session
response.should redirect_to(courses_url)
end
end
我得到了输出...
Failure/Error: response.should redirect_to(courses_url)
Expected response to be a redirect to <http://test.host/courses> but was a redirect to <http://test.host/users/sign_in>
请注意,在我的spec_helper.rb文件中也使用了以下内容。
config.include Devise::TestHelpers, :type => :controller
我已经按照这里的说明进行了尝试。在我的请求规范中,我可以使用以下方法创建用户并登录,这个方法很有效,但我也想让所有的控制器测试都能正常运行。
fill_in "Email", :with => user.email
fill_in "Password", :with => user.password
click_button "Sign in"
任何帮助都将不胜感激。