【问题标题】:rails rspec No route matches [duplicate]rails rspec没有路线匹配[重复]
【发布时间】: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


【解决方案1】:

在您的测试中,尝试调整您的路径,如下所示:

post '/api/login', password: password, email: user_login.email

【讨论】:

  • 不幸的是返回了同样的错误
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 2012-10-11
  • 2017-07-13
  • 1970-01-01
  • 2013-12-31
相关资源
最近更新 更多