Функциональное тестирование перенаправления в контроллере Rails - PullRequest
0 голосов
/ 19 мая 2009

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

  def setup
    @thing = Factory(:thing)
    assert(@thing.id, "Virtual fixture not valid.")
  end

  def test_create_valid
    Thing.any_instance.stubs(:valid?).returns(true)
    post :create
    assert_redirected_to @thing
  end

Я использую factory_girl в настройках. Когда я запускаю свои тесты, я получаю это:

Ожидаемый ответ для перенаправления на http://test.host/thing/2, но был редирект на http://test.host/thing/3.

Я сделал нечто очень похожее с действием обновления в этом контроллере, и тест выглядит так же, но он работает. Я немного смущен тем, что происходит.

Редактировать : Максимилиано ниже указывает, что это, вероятно, потому, что это создает новую запись в базе данных, поэтому она перенаправляет на эту. Как найти новую запись, только что созданную с помощью запроса создания сообщения?

Ответы [ 2 ]

1 голос
/ 19 мая 2009

Разобрался с помощью Макса (спасибо!). Чтобы получить объект, который создается в базе данных, я должен использовать assigns ():

assert_redirected_to назначает (: вещь)

0 голосов
/ 19 мая 2009

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: (Я еще не использовал заводскую девочку ... так что возьмите с собой немного соли) ваша фабрика не создает запись базы данных? если это так, вы создаете его дважды, один раз с фабрикой, другой с контроллером; тогда это нормально, что новая запись имеет другой идентификатор от заводского ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...