Сбой функционального теста для «создания» с использованием should_redirect_to - PullRequest
0 голосов
/ 10 ноября 2010

У меня проблема при попытке использовать 'shoulda' с 'factory_girl' для создания функционального теста для 'create' в приложении Rails.Я создал простой проект, пользователь scaffolded, добавил 'shoulda' (текущую версию gem в моей системе 2.11.3) и 'factory_girl' в test_helper.rb.Создание пользователя вручную работает нормально.Ниже приведены шаги по воспроизведению ошибки:

  1. rails project
  2. имя пользователя лесов: строка
  3. добавьте в test_helper.rb:

      require 'shoulda'  
      require 'factory_girl'
    
  4. rake db: migrate

  5. написать следующий функциональный тест для пользователя (переопределить users_controller_test.rb):

    class UsersControllerTest < ActionController::TestCase
     Factory.define(:user) do |u|
      u.name 'joe'
     end
     context "should create user" do
      context "with valid data" do
       setup do
         User.any_instance.expects(:save).returns(true).once
         User.any_instance.stubs(:id).returns(1001)
         post :create, :user => {}
       end
       should_assign_to :user, :class => User
       should_set_the_flash_to "User was successfully created."
       should_redirect_to("user page"){user_path(1001)}
      end
     end
    end
    
  6. При запуске теста с помощью «rake test: functionals» отображается сбой:

Ожидаемый ответ для перенаправления на <http://test.host/users/1001>но был редирект на <http://test.host/users>.

Я также играл с "should redirect_to", потому что я видел, что "should_redirect_to" устарела, но безуспешно.У вас есть идеи?

Заранее спасибо,

Мариан Василий Карайман.

1 Ответ

0 голосов
/ 11 ноября 2010

Вместо заглушки User#id, заглушку User.create и использование определенного пользовательского фиктивного объекта.

setup do
  mock_user = Factory.stub(:user, :id => 1001)
  User.expects(:create).returns(mock_user)
  mock_user.expects(:save).returns(true)
  post :create, :user => {}
end
...