Rspec / Authlogic / Capybara - неправильный редирект - PullRequest
0 голосов
/ 27 августа 2011

Я новичок в тестировании и пытаюсь написать тест в links_spec.rb.

describe "Links" do
before :each do
    activate_authlogic
    @company = Factory.build(:company)
    # next line creates errors
    @user = Factory.build(:user, :user_type => "Company", :user_type_id => @company.id)
    UserSession.create( @company.user )
end

it "redirects to index after create" do
    link = Factory.build(:link)
    post "links"
    response.should redirect_to(links_path)
end
end

Во-первых, строка @user = Factory.build(...) выдает ошибку, потому что говорит, что пользователь дублирован -Я не знаю, где создается пользователь, потому что Компания и Пользователь не имеют надлежащих полиморфных отношений (это другая история), и Company.rb не создает автоматически пользователя при создании.

Итак,когда я удаляю эту строку, все выглядит нормально, кроме случаев, когда она достигает строки response.should redirect....Вместо перенаправления на links_path, тест не пройден и говорит мне:

Failure/Error: response.should redirect_to(links_path)
   Expected response to be a redirect to <http://www.example.com/links> but was a redirect to <http://www.example.com/home>
 # ./spec/requests/links_spec.rb:13:in `block (2 levels) in <top (required)>'

Я не понимаю, почему это происходит или как это исправить.

1 Ответ

0 голосов
/ 10 ноября 2011

Вы используете что-то вроде database_cleaner для очистки базы данных после каждого теста?

# spec_helper.rb

config.before(:each) do
  DatabaseCleaner.strategy = :truncation
  DatabaseCleaner.start
end

config.after(:each) do
  DatabaseCleaner.clean
end
...