rails rspec没有路由匹配
我正在尝试测试我的路由(它们可以正常处理实际请求)并收到此错误:
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方法,但它们都失败了……
你有一个线索,这将有所帮助!
在测试中,尝试调整路径,如下所示:
post '/api/login', password: password, email: user_login.email