Действие работает, а тест - нет (Следует) - PullRequest
1 голос
/ 12 июня 2010

Я пытаюсь проверить действие по обновлению в Rails с помощью:

context "on PUT to :update" do
  setup do
    @countdown = Factory(:countdown)
    @new_countdown = Factory.stub(:countdown)
    put :update, :id => @countdown.id, :name => @new_countdown.name, :end => @new_countdown.end
  end

  should_respond_with :redirect
  should_redirect_to("the countdowns view") { countdown_url(assigns(:countdown)) }
  should_assign_to :countdown
  should_set_the_flash_to /updated/i

  should "save :countdown with new attributes" do
    @countdown = Countdown.find(@countdown.id)
    assert_equal @new_countdown.name, @countdown.name
    assert_equal 0, (@new_countdown.end - @countdown.end).to_i
  end    
end

Когда я на самом деле прохожу процесс обновления, используя построенный каркас, он прекрасно обновляет запись, но тесты выдают мне эту ошибку:

  1) Failure:
test: on PUT to :update should save :countdown with new attributes. (CountdownsControllerTest)
[/test/functional/countdowns_controller_test.rb:86:in `__bind_1276353837_121269'
 /Library/Ruby/Gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:351:in `call'
 /Library/Ruby/Gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:351:in `test: on PUT to :update should save :countdown with new attributes. ']:
<"Countdown 8"> expected but was
<"Countdown 7">.

1 Ответ

0 голосов
/ 19 августа 2010

Я бы подумал, что эти end столбцы испортят рубин, но, похоже, это не возможно ...?

В любом случае, я предполагаю, что /test/functional/countdowns_controller_test.rb:86 - это утверждение: assert_equal @new_countdown.name, @countdown.name.

Итак, ваше утверждение спрашивает, что @ new_countdown.name и @ countdown.name совпадают? Откройте фабрику и посмотрите, я думаю, это простой ответ. не уверен, что вы пытаетесь проверить здесь.

также, почему @countdown = Countdown.find(@countdown.id) использует то же имя переменной экземпляра? Разве @countdown в настройках не совпадает с @countdown в строке поиска в тесте?

...