【问题标题】:Rspec Routing Error, :id=>#User id:nilRspec 路由错误,:id=>#User id:nil
【发布时间】:2012-01-05 06:31:26
【问题描述】:

我有 link_to "My Account", edit_user_path(current_user) 在浏览器中工作,但是 Rspec 给了我以下错误

  1) Can edit user details
     Failure/Error: current_path.should eq(edit_user_path(@user))
     ActionController::RoutingError:
       No route matches {:action=>"edit", :controller=>"users", :id=>#<User id: nil, username: "test_user_6", email: "test_user_6@email.com", crypted_password: "cf10df3a34c12b54fd3d99c11395d43ec8f663a48ab8b32917d...", password_salt: "7cZsZhedN2z5Pxbrcl", persistence_token: "59f5a50ac21151f1bc875b5a8b1d14896fb2010dd14dab9e7cd...", perishable_token: nil, created_at: nil, updated_at: nil>}

规格

  it "can edit user details" do
    integration_sign_up(@user)
    click_link("My Account")
    current_path.should eq(edit_user_path(@user))
  end

运行 tail -f log/test.log 返回 200,所以我猜这是 Rspec 问题?

Started GET "/users/565/edit" for 127.0.0.1 at 2012-01-05 17:03:30 +1100
  Processing by UsersController#edit as HTML
  Parameters: {"id"=>"565"}
Rendered layouts/_head.html.haml (1.6ms)
  User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."persistence_token" = 'ec26b6f501ff97a0f6b467c3caabb7e93a1cf97905194d030b465d3163d846e2fad9dc0ccbfc371e16b920c57634e843f544d7015eb9dbafda5711e6ec7b9018' LIMIT 1
Rendered layouts/_navigation.html.haml (2.9ms)
Rendered layouts/_flashes.html.haml (0.1ms)
Rendered layouts/_footer.html.haml (1.1ms)
Completed 200 OK in 11ms (Views: 10.8ms | ActiveRecord: 0.4ms)
   (0.2ms)  ROLLBACK

在浏览器中测试成功。

我需要解决 Rspec 问题还是我做错了什么?

鉴于 Rspec 错误有 id=&gt;#User id:nil 我猜它是 Rspec?

【问题讨论】:

    标签: ruby-on-rails-3.1 rspec-rails


    【解决方案1】:

    错误消息准确地告诉您问题所在。 @user 对象没有 id,因此 Rails 无法生成路由。通过存根或保存记录来确保 @user 有一个 id。

    【讨论】:

    • 谢谢大卫。问题是我如何设置用户@user = Factory.build(:user)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    相关资源
    最近更新 更多