вторник, 19 февраля 2013 г.

Причесываю тесты следуя правил


1. Дублирующиеся тесты в разных контекстах можно вынести в shared_examples (https://www.relishapp.com/rspec/rspec-core/v/2-12/docs/example-groups/shared-examples!), например так:
shared_examples_for "страница с ошибками во всех полях" do
  it { @login_page.should be_errors }
  it { @login_page.should be_error_wrong_fio }
  it { @login_page.should be_error_wrong_email }
  it { @login_page.should be_error_no_match_pass }
end
describe " фио цифрами" do
  it { ... }
  it_behaves_like "страница с ошибками во всех полях"
end
describe " фио на английском" do
  it { ... }
  it_behaves_like "страница с ошибками во всех полях"
end
shared_examples лучше все выносить в отдельный файлик и хранить его в папочке support
Если эти описания нельзя как-то логически объединить в один shared_examples_for, навроде "

регистрация с ошибками", то лучше использовать для каждого дискрайба отдельные, пусть даже повторяющиеся, но понятные it

2. в rspec принято все общие заголовочные вещи выносить в spec/spec_helper.rb и во всех спеках:
require 'spec_helper'
кроме того в нем можно предварительно установить общие для тестов переменные
RSpec.configure do |config|
  config.let!(:browser) { Selenium::WebDriver.for :ff }
end

Комментариев нет:

Отправить комментарий