【问题标题】:Rspec error: ActionController::UrlGenerationError: No route matchesRspec 错误:ActionController::UrlGenerationError:没有路由匹配
【发布时间】:2017-04-02 21:58:07
【问题描述】:

我一直在谷歌和这个网站上冲浪,但无法找到有效的解决方案。如果有人可以提供帮助,将不胜感激。

所有控制器测试都失败并显示大致相同的消息。

在我看来,它需要的所有数据都在那里,但它仍然失败。为了让这个测试正常工作,它只需要路线中的帖子 ID、没有登录或类似的东西。

如果我了解导致此错误的原因,我相信我可以让其余的工作正常进行。这是一个示例(产生上述错误的示例)

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

在帖子控制器中有一条与 show 动作一致的路由...

..所以我有点不确定为什么这个测试(以及控制器的所有测试)失败了。

自 2013 年左右以来,我一直在这里查看处理此问题的问题,但他们并没有为我解决问题。我只是无法让 rspec 找到这条路线,因此我们将不胜感激。

【问题讨论】:

  • 你试过这个:get :show, id: post.to_param, session: valid_session 吗?您是否指定了 type: :controller ?像这样:RSpec.describe PostsController, type: :controller

标签: ruby-on-rails-4 rspec devise


【解决方案1】:

您不需要将参数放在键params下。

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

【讨论】:

    猜你喜欢
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    相关资源
    最近更新 更多