Създаване на маркерите си rspec тестове

  • 06.24.16 07:53 •
  • habravalt •
  • • # 303998
  • • Habrahabr
  • 0 •
  • 1500

- като Forbes, само по-добре.

Здравейте, моето име е Леонид и работя в екип, с помощта на Руби на релси, компанията Align Technology.
В работата си използваме пистата във връзка с RSpec, а днес ще споделим опита си за това как да направят живота си по-лесно с помощта на персонализирани етикети в тестовете.

По подразбиране, rspek в релси има няколко папки тестове групи с факта, че те са за тестване: модел на отделните контролери, изгледи, множество контролери, маршрутизация.

В рамките на самите rspek поставя етикети (метаданни), като я допълва тестове във всяка група от помощник методи и нови твърдения. (Metadata - диез, в която се добавя към всяка папка тест ключ тип с името на тази директория)

Всеки тест се кандидатира за своята се генерира от собствен клас, което, всъщност, се смесват с правилните DSL модули помощници и твърдения.

Можете да използвате вашите собствени тагове, ако свойствата да бъдат удовлетворени от теста си, не позволявайте да го поставите на всяка конкретна директория.

Ето някои полезни тагове, които използваме в нашата работа.

Контролира работата на търсачката (например слънчеви петна)

Обикновено, търсене на библиотеката в релсите интегрират с ActiveRecord / ActiveModel класове, настройка обратно after_save извика наричат ​​DSL метод конфигурация индексирани полета.

В същото време един от най-популярните търсене Sunspot библиотеката не води автоматично се интегрира с rspekom, това е, вашите тестове, винаги ще се обадят на индексирането на модели. Най-често тя сериозно забавя тестовете, тъй като търсенето обикновено се използва при тестовете само в контролера за търсене и, например, в тестовете на синонимите и класиране като правилната конфигурация на търсачката.

Нека да добавите маркер обикновено включва изпращане на данни към търсачката, само когато това е необходимо.

Сега, просто маркирайте тестове, които наистина се нуждаят от маркер за търсене на двигателя: Solr.
Например, ако проверката работа взаимозаменяемо в synonyms.txt правилно:

Тестване на миграцията и "на живо данни": базата данни като за хващане.

В действителност, за приложения с "малък" база данни, нищо не пречи да използва цялата база под формата на "масиви от данни тест."

Това ще позволи да се направи assorty на реални данни и тестване на комплекс миграция.

Така че, за маркиране на: Зимна тестовете, които започват с "на живо" на база данни, снимка, ние ще трябва няколко неща. Първият - Rake-задача, която получава свеж моментна снимка на базата данни (например, сменяем веднъж дневно), и ако е необходимо, почистени от важните производствени данни.

На второ място е това: възстановяване на база данни отнема време, така че нека да започнем всички "нормални" тестове, а след това група тестовете "завършени" основание, че те бяха пуснати в края:

(Още по-добре не използвайте обикновени механизъм за провеждане на тестовете в сделка, която се анулират в края на теста)

Имайте предвид, че Rspec се опитва да стартира тестовете в произволен ред, за да намерите проблеми с държавата, разглезена предишния тест. (След това, отстраняване на грешки е възможно с помощта на същия ред, ако прехвърлянето rspeku --seeded флаг със стойността, която отпечатва при стартиране) Ето защо, ние следваме конвенция, и нулиране генератор на случайни числа config.seed rspeka на.

Остава да се определят правилата за Сами етикет:

Ами в този случай в базата от данни на наклона-ЗАДАЧА: restore_from_snapshot кеш изтеглена снимка база в ПТУ /, а не за да го заредите всеки път на машина директория на разработчика.

Тествайте разгърнати прилагането

Дори по-добре: ние можем да използваме същите тестове за валидиране искания "на живо" молба. Разбира се, това е възможно само ако те не работят с базата данни на всички, или чете от базата данни на едни и същи данни, както в разгърнати сървъра.

Сега ние се пускат само желания част от нашия тест скрипт като дим тест: