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