Во-первых, позвольте мне сказать, что логин работает правильно. Пользователь вошел в систему точно. Я также уверен, что сообщение происходит правильно (проверил сообщения и сбрасывает, так что я уверен). И реальное действие приращения, как описывает тест, прекрасно работает. Только тест не пройден.
Но в этом rspec ниже:
it "should increase the strength ability by one point and also update the strength_points by one if strength is the trained ability" do
@user.str = 10
@user.str_points = 0
post :train_ability, :ability => 'str'
flash[:error].should be_nil
@user.str_points.should == 1
@user.str.should == 11
end
Ошибка str и str_points. На самом деле я использую функцию login_user в своих макросах (как указано в devise), например:
module ControllerMacros
def login_user
before(:each) do
@request.env["devise.mapping"] = :user
@user = Factory.create(:user)
sign_in @user
end
end
end
Я уверен, что @user действительно является current_user, но кажется, что никаких изменений атрибутов на самом деле не происходит с @user внутри спецификации (: user - фабрика, которую я создал).
Почему это не работает? : /