【发布时间】:2015-02-24 07:30:03
【问题描述】:
我正在尝试测试我的路线(它们可以正常处理实际请求)并收到此错误:
ActionController::UrlGenerationError:
No route matches {:action=>"api/login", :controller=>"login", :email=>"a@a.com", :password=>"super_secure"}
我查看了一堆类似的问题,但找不到我的问题的准确答案。
我的路线是:
Rails.application.routes.draw do
post 'api/login' => 'login#email_login'
我的测试是
describe LoginController do
it 'works fine' do
password = 'super_secure'
salt = BCrypt::Engine.generate_salt.to_s
hash_password = BCrypt::Engine.hash_secret(password, salt).to_s
user_login = FactoryGirl.create(:user_login, user_hash: hash_password, salt: salt, email: 'a@a.com')
post 'api/login', password: password, email: user_login.email
expect(response).to be_success
end
end
最后我的LoginController 是:
class LoginController < ActionController::Base
protect_from_forgery except: [:email_login], with: :exception
def email_login
auth = UserLogin.auth(params[:email], params[:password])
return render text: 'unauthorized', status: 401 unless auth[:user]
return render json: auth
end
end
我尝试了不同的方法将数据传递给 post 方法,但都失败了...
如果你有线索,那会有所帮助!
【问题讨论】:
-
这听起来像 stackoverflow.com/questions/28551578/… 对我来说
-
谢谢,我将测试从规范/控制器移到规范/请求,它神奇地工作了。如果您将评论添加为回复,我会接受。
标签: ruby-on-rails rspec routing