Тест интеграции Rspec (с включением флажка) не пройдет

#ruby-on-rails #ruby-on-rails-3 #rspec

#ruby-on-rails #ruby-on-rails-3 #rspec

Вопрос:

Я работаю над приложением goal, где пользователь может установить флажок рядом с целью, чтобы пометить его как завершенный. Я написал тест для этой функциональности, но что-то не совсем так, потому что он продолжает давать сбой. В конце концов мне это надоело, и я просто написал код, который работает, но тест по-прежнему терпит неудачу. Я все еще изучаю Rspec, поэтому любой совет, который вы могли бы мне дать, был бы полезен.

Тест

 # @user has already been signed in

describe "completing a goal" do

  before(:each) do
    @goal = Factory(:goal, :user => @user)
  end

  it "should set 'completed' attribute to true" do
    visit edit_goal_path(@goal)
    check('goal_completed')
    click_button('goal_submit')
    @goal.completed.should be_true
  end
end
  

Результат

 Failures:

1) Goals completing a goal should set 'completed' attribute to true
 Failure/Error: @goal.completed.should be_true
   expected nil to be true
 # ./spec/requests/goals_spec.rb:81:in `block (3 levels) in <top (required)>'
  

Ответ №1:

Если вы хотите, чтобы это был интеграционный тест, было бы лучше, чтобы ваше утверждение касалось содержимого страницы. Что-то вроде:

assert_text "Goal met on 1/1/2011"

Если вы хотите придерживаться утверждений модели, я почти уверен, что вам просто нужно перезагрузить: @goal.reload.completed.should be_true

Комментарии:

1. Исправлено, спасибо! Разве я не поместил бы это в спецификацию контроллера, если бы придерживался completed. должно быть_true, поскольку оно имеет дело с фактическим контроллером?