私はrspecの初心者で、いくつかの問題に直面しています。誰かが私を助けることができますか?
ユーザーの非アクティブ化を担当するコントローラーアクションがあります。rspec テストでカバーしようとしていますが、結果は私が待っているものではありません。
コントローラ:
def deactivate
@user = User.find(params[:id])
if !@user.nil?
@user.update_attribute(:active, false)
redirect_to users_url
end
end
コントローラー仕様
describe "PUT #deactivate" do
describe "with valid parameters" do
before (:each) do
@user = mock_model(User, :id => 100, :login => "login", :password => "password123",
:email => "email@gmail.com", :active => true)
User.should_receive(:find).with("100").and_return(@user)
end
it "should deactivate an user" do
@user.stub!(:update_attribute).with(:active, false).and_return(true)
put :deactivate, :id => "100"
@user.active.should eq false
end
end
end
テスト結果:
1) UsersController PUT #deactivate with valid parameters should deactivate an user
Failure/Error: @user.active.should eq false
expected: false
got: true
(compared using ==)
したがって、アクティブな属性が false である必要があるのに、なぜ true のままなのかわかりません。何か案は ?
ありがとう!