當我繼續學習使用RSpec 2和Rails 3.1的TDD時,我似乎無法找到解決此問題的方法。帶RSpec和Rails的TDD:測試控制器沒有視圖的動作
我有一個用戶控制器與新的和創建操作。在我的UsersController天賦,我有
users_controller_spec.rb
describe "POST 'create'" do
before(:each) do
@attr = Factory.attributes_for(:user)
end
it "should assign an @user variable" do
post :create, :user => @attr
assigns[:user].should_not be_nil
assigns[:user].should be_kind_of(User)
end
end
,並在我的UsersController,
users_controller.rb
def create
@user = User.new(params[:user])
end
此規範與
失敗1) UsersController POST 'create' should assign an @user variable
Failure/Error: post :create, :user => @attr
ActionView::MissingTemplate:
我可以繼續實現應用程序代碼以通過此測試,但我覺得此測試應該按原樣傳遞。
有什麼建議嗎?
我見,我認爲測試會(並且應該)通過,因爲它確實分配了一個@user變量。換句話說,應用程序代碼正在做我正在測試的內容。看起來我需要實現比測試需要傳遞更多的應用程序代碼,因爲我還沒有測試渲染模板或用戶重定向到的位置。 – Feech
沒錯。在測試中有錯誤和失敗。你的測試沒有遇到失敗(如果@user是'nil'或者不是'User'),那麼測試就會失敗。失敗或錯誤被認爲是不成功的測試。 – aNoble
感謝您的幫助aNoble。我想我會保持我的控制器測試模式,首先測試正確的渲染/重定向,然後繼續發生其他事情。 – Feech