当路线显然存在时,Rails Rspec没有路线错误

时间:2012-03-26 13:22:34

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

我一直在编写一些rspec测试,现在我想在用户创建后验证重定向。许多其他测试都有效,包括创建用户。

但是,以下最后一项测试失败:

 describe "success" do
   before(:each) do
    @attr = { :username => "woweee123",
              :email => "email@mail.com", 
              :password => "password123",
              :password_confirmation => "password123"}
    end

    it "should create the user" do
          lambda do 
             post :create, :user => @attr
          end.should change(User, :count)
     end

     it "should redirect to a user show page after creation" do
         lambda do
              post :create, :user => @attr
         end.should redirect_to(user_path(assigns(:user)))
     end


   end

失败的测试是:没有路线匹配{:action =>“show”,:controller =>“users”

但是,当我手动创建用户(在localhost上)时,重定向显然有效。为什么这会失败?

2 个答案:

答案 0 :(得分:0)

我会检查是否

assigns(@user).new_record?
帖子之后

不再是真的了。它似乎在你的测试中没有id。某些验证能否失败?

答案 1 :(得分:0)

对于那些感兴趣的人,答案是我必须改变测试,看起来像:

 it "should redirect to a user show page after creation" do
     post :create, :user => @attr
     response.should redirect_to(user_path(assigns(:user)))
 end

这很有效。