【问题标题】:Rspec test to post as jsonRspec 测试以 json 形式发布
【发布时间】:2015-05-11 23:24:58
【问题描述】:

我在我的 rspec 测试中尝试将 JSON 作为 JSON 发布到我的控制器操作时遇到问题

RSpec.describe RegistrationsController, type: :controller do
  context 'Adding a Valid User' do
    it 'Returns Success Code and User object' do
     @params = { :user => {username: 'name', school: 'school'} }.to_json
     post :create, @params
    end
  end
end

目前我想成功触发发布请求,但一直收到此错误

Failure/Error: post :create, @params
 AbstractController::ActionNotFound:
   Could not find devise mapping for path "/lnf".

我的路线是这样设置的

Rails.application.routes.draw do
 constraints(subdomain: 'api') do
   devise_for :users, path: 'lnf', controllers: { registrations: "registrations" }

   devise_scope :user do
     post "/lnf" => 'registrations#create'
   end
 end
end

Rake 路由输出以下内容

Prefix Verb              URI Pattern     Controller#Action
user_registration POST   /lnf(.:format)  registrations#create {:subdomain=>"api"}
lnf POST                 /lnf(.:format)  registrations#create {:subdomain=>"api"}

所以我有 2 个相同动作的声明?

有没有人能解释一下这个问题

谢谢

【问题讨论】:

标签: ruby-on-rails ruby json rspec


【解决方案1】:

好的,经过几个小时的艰苦努力,我的测试正确通过并通过执行以下操作以 json 格式发布

require 'rails_helper'

RSpec.describe RegistrationsController, type: :controller do
  before :each do
    request.env['devise.mapping'] = Devise.mappings[:user]
  end
 context 'Adding a Valid User' do
  it 'Returns Success Code and User object' do
   json = { user: { username: "richlewis14", school: "Baden Powell", email: "richlewis14@gmail.com", password: "Password1", password_confirmation: "Password1"}}.to_json
  post :create, json
  expect(response.code).to eq('201')
 end
end
end

我的路线已恢复正常

Rails.application.routes.draw do
 constraints(subdomain: 'api') do
  devise_for :users, path: 'lnf', controllers: { registrations: "registrations" }
 end
end

在我的测试环境中我必须添加

config.action_mailer.default_url_options = { host: 'localhost' }

这里的关键是

request.env['devise.mapping'] = Devise.mappings[:user]

还不完全确定它的作用,它是我列表中的下一个要查找的内容,但我的测试开始运行并通过

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多