gpt4 book ai didi

ruby-on-rails - 为什么我的 rspec-rails 生成的规范由于路由异常而失败?

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:48 25 4
gpt4 key购买 nike

我用 Rails (4.1.16) 和 Rspec (3.5.1) 生成了一个脚手架。

它生成了这个测试:

describe "GET #show" do
it "assigns the requested team as @team" do
team = Team.create! valid_attributes
get :show, params: {id: team.to_param}, session: valid_session
expect(assigns(:team)).to eq(team)
end
end

输出这个错误:

TeamsController GET #show assigns the requested team as @team
Failure/Error: get :show, params: {id: team.to_param}, session: valid_session

ActionController::UrlGenerationError:
No route matches {:action=>"show", :controller=>"teams", :params=>{:id=>"82"}, :session=>{}}

如果我删除参数的键以get,即:

get :show, {id: team.to_param}, valid_session

测试顺利通过。

不确定是什么 gem 定义了生成器模板(rspec-rails?)以及为什么我会收到此错误。帮助理解这个问题将不胜感激。谢谢。

最佳答案

生成器(rspec:scaffold,随 rspec-rails 一起提供)正在使用 the syntax required by Rails 5 生成测试(请参阅该博客文章的最后一部分),它与 Rails 4 不兼容。我认为这是 rspec-rails 中的一个错误,因为 rspec-rails 3.5 在其他方面与 Rails 4 兼容。(我将这些版本一起使用我自己;我只是没用过发电机。)

rspec-rails 是 changed to use the Rails 5 syntax in rspec-rails 3.5.0.beta4 ,所以一个解决方法是使用 rspec 和 rspec-rails 3.4——不太好,因为较新的版本具有对 Rails 4 和 Rails 5 一样有用的功能和修复。另一个解决方法是手动修复生成器的输出,因为你做了。

关于ruby-on-rails - 为什么我的 rspec-rails 生成的规范由于路由异常而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38832294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com