我试图通过创建一个新的用户会话POST帮助器来开始一个新的用户会话。以下是我有RSpec /水豚请求规格 - 无法得到Devise POST新用户会话
def login(user)
post user_session_path, :login => user.username, :password => user.password
end
并为用户
user = Factory.create(:user)
我在RSpec的测试,引导用户需要身份验证的页面。使用助手,我期望创建一个新的用户会话。但是,运行规范,它告诉我当前页面是登录屏幕。这告诉没有创建新的用户会话,并且在没有用户会话访问受限资源时用户正被重定向到登录屏幕。看看测试日志,情况就是这样。
也看着日志,它说POST操作是未经授权的。
Started POST "/login" for 127.0.0.1 at 2012-02-04 13:34:59 -0800
Processing by SessionsController#create as HTML
Parameters: {"login"=>"foo12", "password"=>"[FILTERED]"}
Completed 401 Unauthorized in 1ms
Processing by SessionsController#new as HTML
Parameters: {"login"=>"foo12", "password"=>"[FILTERED]"}
Rendered devise/shared/_links.erb (1.4ms)
Completed 200 OK in 15ms (Views: 12.7ms | ActiveRecord: 0.0ms)
我尝试通过浏览器手动使用登录页面,并能够创建会话就好了。我还写了一个测试与水豚,访问登录页面,填写用户凭据,并提交。这创建了一个没有问题的新用户会话。
我遇到了这个简单地说,当我试图错误地将这两个声明合并为1。他们应该分开。 'config.before(:每个)做 DatabaseCleaner.strategy =:交易 端 config.before(:每个)做 DatabaseCleaner.start 端 ' 成 ' config.before(:每个)do DatabaseCleaner.strategy =:事务 DatabaseCleaner.start 结束 ' – Ryan 2015-07-04 16:49:58