2013-09-29 2 views
0

Вы пишете тесты, заставляете их терпеть неудачу, а затем напишите свой код, чтобы они прошли. Простой ... пока вы не решите использовать жучок вместо вашего кода. Придумайте, например.BDD: Как проверить проверку подлинности при использовании Devise?

Я действительно не знаю, какую интеграцию (aka request или feature) мне следует написать.

Если я ничего не пишу, я должен открыть браузер, чтобы проверить, совместима ли интеграция драгоценного камня с приложением, и это плохо (cfr. Ryan Bates). Кроме того, я могу ошибочно нарушить функциональность.

С другой стороны неверно и бесполезно проверять код другого пользователя.

Что такое правильный баланс? Как я могу сделать BDD (с RSpec) при добавлении Devise?

Конкретный пример того, что вы хотели бы написать в качестве теста для авторизации при использовании Devise, будет с благодарностью оценен.

Как бы вы ответили на одни и те же вопросы, если у вас были пользовательские представления в вашем приложении?

ответ

2

Вы можете определенно добиться этого, используя Capybara и Rspec.

Установите водосвинку следующие инструкции здесь https://github.com/jnicklas/capybara#using-capybara-with-rspec - наконечник, убедитесь, что имя каталога, в котором SPEC является features

Затем просто использовать водосвинку протестировать ваши приложения

Таким образом, чтобы проверить ваш знак этот пример должен работать, очевидно, вам нужно будет настроить параметры и маршруты на основе вашего приложения.

require 'spec_helper' 

feature 'Signing up' do 
    scenario 'creates a new user' do 
    visit '/users/sign_up' 
    password = 'samplepassword' 
    fill_in 'First name', with: 'Testy' 
    fill_in 'Last name', with: 'McTester' 
    fill_in 'Email', with: '[email protected]' 
    fill_in 'Password', with: password 
    fill_in 'Password confirmation', with: password 
    click_link 'Sign up' 
    expect(page).to have_content 'You have signed up successfully' 
    end 
end 

Разрабатывают также тестовые хелперы, которые вы можете использовать при тестировании других областей вашего приложения https://github.com/plataformatec/devise#test-helpers

Они могут быть особенно полезны для обеспечения того, чтобы любые ограничения вы размещаете на разных страницах правильны. Вы можете проверить это поведение, проверяя, что происходит, если пользователь подписывается или имеют неправильную роль и т.д.

+0

+1 Но помимо практического руководства по проверке подлинности в целом (что я уже знаю), я хотел бы иметь теоретическое обсуждение того, что следует тестировать и что не следует тестировать при использовании кода (например, драгоценного камня), которые уже были протестированы. – collimarco

0

Я придумал следующие соображения:

  • семантическая причина заключается в том, что тестирование высокого уровня (напримерRSpec с Capybara) означает, что вы описываете функции вашего сайта, а аутентификация по-прежнему является функцией, даже если вы используете драгоценный камень
  • . Практическая причина в том, что если я не добавлю тесты, мне, безусловно, придется протестировать аутентификацию через браузер
  • Предположим, вы решили удалить драгоценный камень и переписать аутентификацию с нуля; это рефакторинг, и поскольку тесты должны разрешать рефакторинг без необходимости их изменения, есть еще одна причина, чтобы с самого начала добавить тестирование высокого уровня (даже если вы будете использовать драгоценный камень)
  • Не нужно плохо, если вы проверите код, который уже был протестирован, если вы делаете это на другом уровне абстракции: например, функциональное тестирование и интеграционное тестирование всегда частично перекрываются при модульном тестировании
  • вы не дважды тестируете одни и те же вещи, потому что вы тестируете интеграцию драгоценный камень с вашим сайтом, и это не может быть уже проверено внутри драгоценного камня.

IMHO В заключение есть еще несколько причин проверить, чем не тестировать, системы аутентификации, основанной на сторонних драгоценных камнях.

Смежные вопросы