Почему не разрабатывать связанные спецификации работы? - PullRequest
0 голосов
/ 19 марта 2011

Во-первых, позвольте мне сказать, что логин работает правильно. Пользователь вошел в систему точно. Я также уверен, что сообщение происходит правильно (проверил сообщения и сбрасывает, так что я уверен). И реальное действие приращения, как описывает тест, прекрасно работает. Только тест не пройден.

Но в этом 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 - фабрика, которую я создал).

Почему это не работает? : /

1 Ответ

1 голос
/ 19 марта 2011

Прежде всего, вы не сохранили @user перед публикацией на :train_ability. Существует также небольшая вероятность того, что ваш @user может быть кэширован после этого, поэтому перезагрузите его, прежде чем ваши утверждения могут понадобиться.

Попробуйте изменить свою спецификацию на следующую

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
  @user.save! # save the @user object so str is 10 and str_points are 0
  post :train_ability, :ability => 'str'
  flash[:error].should be_nil
  @user.reload # reload the user in case str and str_points are cached
  @user.str_points.should == 1
  @user.str.should == 11
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...