为什么我的aspect -rails生成的规范由于路由异常而失败



我用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定义了生成器模板(respect -rails?),为什么我得到这个错误。了解这个问题将不胜感激。谢谢。

生成器(rspec:scaffold,随aspect - Rails一起提供)正在使用Rails 5所需的语法生成测试(请参阅该博客文章的最后一部分),而Rails 5与Rails 4不兼容。我认为这是aspect - Rails的一个bug,因为aspect - Rails 3.5与Rails 4是兼容的。(我自己也在使用这些版本;我只是没有使用生成器。)

aspect - Rails在aspect - Rails 3.5.0中被更改为使用Rails 5语法。所以一个解决办法是使用rspec和respect - Rails 3.4——不是很好,因为新版本的特性和修复在Rails 4和Rails 5中一样有用。另一个解决方法是手动修复生成器的输出。

相关内容

  • 没有找到相关文章

最新更新