Създаване на маркерите си 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 кеш изтеглена снимка база в ПТУ /, а не за да го заредите всеки път на машина директория на разработчика.
Тествайте разгърнати прилагането
Дори по-добре: ние можем да използваме същите тестове за валидиране искания "на живо" молба. Разбира се, това е възможно само ако те не работят с базата данни на всички, или чете от базата данни на едни и същи данни, както в разгърнати сървъра.
Сега ние се пускат само желания част от нашия тест скрипт като дим тест: