- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对测试和 Rails 非常陌生(不到 1 年的经验)。请在回答之前注意这一点。
我有一个模型 recipe
属于 source
并且 source
属于 client
。
路线是:
client_source_recipes GET/clients/:client_id/sources/:source_id/recipes(.:format) recipes#index
我正在尝试测试这个:
RSpec.describe RecipesController, :type => :controller do
# Prerequisites go here (mentioned at the end of the question)
describe "GET #index" do
it "assigns all recipes as @recipes" do
recipe = Recipe.create! valid_attributes
get :index, params: { client_id: client.id, source_id: source.id, locale: 'cs' }, session: valid_session
expect(assigns(:recipes)).to eq([recipe])
# Commented below are different ways I tried but failed:
# visit client_source_recipes_path(client.id, source.id, locale: 'cs')
# visit "/client/#{client.id}/source/#{source.id}/recipes?locale=cs"
# get client_source_recipes_path, params: { client_id: client.id, source_id: source.id, locale: 'cs' }, session: valid_session
# get client_source_recipes_path(client.id, source.id, locale: 'cs')
end
end
end
测试先决条件:
login_user # defined - works well
let(:client) { create :client } # defined in factories
let(:source) { create :source, warehouse_id: 1, client_id: client.id } # defined in factories
let(:valid_attributes) {
{ name: "name", source_id: source.id }
}
let(:valid_session) { {"warden.user.user.key" => session["warden.user.user.key"]} } # works well in other tests
当其他地方都在使用相同的路线时,为什么我会收到路线错误?
错误:
Error: ActionController::RoutingError: No route matches {:controller=>"recipes", :params=>{:client_id=>"1", :source_id=>"1", :locale=>"cs"}, :session=>{"warden.user.user.key"=>[["1"], "$2a$04$bobnhLAlKEsxZtlJheY64."]}}
Error: ActionController::RoutingError: No route matches {:controller=>"recipes", :action=>"/clients/1/sources/1/recipes?locale=cs"}
Error: ActionController::RoutingError: No route matches {:controller=>"recipes", :action=>"/clients/1/sources/1/recipes"}
# etc. etc. i.e. errors are more or less the same
提前致谢。
最佳答案
好的!
我“花了”大约 5 个小时来思考这个问题,但无论如何都做不到,现在我发现唯一的问题是语法:
错误的(旧的)语法(显式期望参数和 session 作为参数):
get :index, { client_id: client.id, source_id: source.id, locale: 'cs' }, session: valid_session
#or
get :index, params: { client_id: client.id, source_id: source.id, locale: 'cs' }, session: valid_session
正确的(较新的)语法(隐式接受参数和 session 作为参数):
get :index, { client_id: client.id, source_id: source.id, locale: 'cs' }, valid_session
我希望它可以节省其他人的宝贵时间,不像我 ):
关于ruby-on-rails - 在 rspec 文件中,我得到 => Error: ActionController::RoutingError: No route matches xxxxxxx despite valid routing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59105522/
rails 服务器说 Started POST "/user/1/follow" ActionController::RoutingError (No route matches [POST] "/u
简单:一方面 Angularjs 在服务器上运行 'use strict' ### Sevices ### angular.module('app.services', []) .factory 'C
我的道路有问题,我不明白他为什么告诉我“Dashboard::TasksController”因为在我的 Controller 文件中包含文件 dashbaord/tasks.rb class Tas
我正在尝试创建一个仅响应 json 的简单注册模型: class Api::RegistrationController "OK" else render :status =>
所以...第一次向 StackOverflow 提问... 我按照 Rails Guides 和 RailsApps 项目将现有的 Rails 4.2.5 应用程序(使用 Ruby 2.2.4)转换为
我正在研究一个使用 unicorn 和 rails 的教程。我是 Rails 的新手,出于本教程的目的,我为项目所做的所有工作都是 bundle exec rails new rails-starte
在预编译 Assets 后,尝试使用 Assets 管道在生产模式下测试部署一个简单的 Rails 3.1 应用程序。现在使用 JRuby 和 WEBrick 1.3.1;下一步计划是在 JBoss
我试图从 ActionController::RoutingError 营救我无法让它工作。我尝试了几乎所有可以在网上找到的东西,包括 rescue_from ActionController::Ro
我正在使用 rails 创建一个 rest api,并使用 ember 数据从远程 ember 应用程序进行调用。我在什么应该是 GET 请求时收到此路由错误。我如何创建一个 OPTIONS 方法,我
更新 : 这是因为文件名拼写错误 正确的:~/sample_app/app/controllers/microposts_controller.rb 不正确:~/sample_app/app/cont
rails 3、paperclip 和 s2 bucket 发生路由错误。我想在我的应用程序中附加视频。但它失败并抛出以下内容 ActionController::RoutingError (No r
我在 app/controllers/v1/white_label_api 中创建 Controller class Api::WhiteLabel::V1::BaseController < App
rails 4.2.4, ruby 2.1.7 我在 lib/目录中有一个模块。 lib/BLL/user_feed.rb module BLL class UserFeed def ini
好的,我已经看到了很多关于在应用程序中使用命名空间时如何让 Devise 工作的不同答案,但没有一个对我有用。 我将我的应用程序分成三个命名空间 主页(公共(public)登录页面) 帐户(用户登录的
如何禁用 ActionController::RoutingError 错误的日志记录? 我的生产日志文件中充满了机器人,它们正在搜索phpMyAdmin和其他内容。 然后忽略了实际的应用程序错误。
我检查了常见的拼写错误或错误位置的文件。毫无疑问,它会很简单——但我就是看不到它。我错过了什么? controllers/admin/top_10_pages_controller.rb class
我正在尝试让 Grape API 以 json 格式回答其所有动词。问题是我无法回答 json 格式的路由错误。我什至无法挽救 ActionController::RoutingError。 我已阅读
我正在使用 jquery gem 并安装了所有可以删除质子的东西。 我收到此错误,但我不明白为什么? ActionController::RoutingError (No route matches
有没有办法更改 ActionController::RoutingError 的日志级别? 我想将其从错误更改为警告。 google了一下,没找到解决办法。。。 我只想将路由错误显示为警告。但不会更改
我创建了一个名为“post”的自定义 RESTful 操作。它作为一个名为 post 的(公共(public))方法出现在 TransactionsController 中。 resources :t
我是一名优秀的程序员,十分优秀!