我一直在编写一些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上)时,重定向显然有效。为什么这会失败?
答案 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
这很有效。