RSpec - RSpec

RSpec
Разработчики)Дэвид Челимски, Майрон Марстон, Энди Линдеман, Джон Роу, Пол Касаретто, Сэм Фиппен, Брэдли Шефер[1]
изначальный выпуск18 мая 2007 г.; 13 лет назад (2007-05-18)[2]
Стабильный выпуск
3.8.0 / 4 августа 2018 г. (2018-08-04)[3]
Репозиторий Отредактируйте это в Викиданных
Операционная системаКроссплатформенность
ТипПоведенческая разработка рамки / Инструмент тестирования
ЛицензияЛицензия MIT
Интернет сайтrspec.Информация

RSpec это компьютер предметно-ориентированный язык (DSL) (конкретный домен приложения) инструмент тестирования написано в язык программирования Рубин для тестирования кода Ruby.[4] Это поведенческая разработка (BDD) рамки который широко используется в производственных приложениях. Основная идея этой концепции заключается в том, что разработка через тестирование (TDD), где тесты пишутся первыми, а разработка основана на написании достаточного количества кода, который будет выполнять эти тесты, а затем рефакторинг. Он содержит свой фреймворк который полностью интегрирован в структуру на основе JMock.[5] Простота синтаксиса RSpec делает его одним из популярных инструментов тестирования приложений Ruby. Инструмент RSpec можно использовать, установив rspec самоцвет который состоит из трех других драгоценных камней, а именно rspec-core, rspec-ожидание и rspec-mock.[4]

История

RSpec был начат как эксперимент Стивеном Бейкером в 2005 году вместе с членами его команды Дэйвом Астелсом, Аслаком Хеллесой и Дэвидом Челимски. Челимский отвечал за разработку RSpec-Rails, которая облегчила интеграцию с Ruby on Rails. Первоначальный выпуск, то есть RSpec 1.0, вышел в мае 2007 года и содержал множество основных функций RSpec, которые также включены в последние выпуски. Однако из-за некоторых технических проблем, таких как скорость тестирования, он был прекращен позже. Третья версия RSpec, т.е. RSpec 3 был выпущен в июле 2014 года и имел много новых функций, таких как проверять двойники, составные сопоставители и многое другое. Последняя доступная в настоящее время версия RSpec - RSpec 3.7.

Применение

Описание поведения объектов

Как упоминалось выше, RSpec предоставляет предметно-ориентированный язык для описания поведения объекты. В ключевые слова используемые в RSpec аналогичны тем, которые используются в других языках и / или фреймворках TDD.[6] Например, если учитываются ключевые слова, используемые в Test :: Unit, они могут быть сопоставлены с ключевыми словами RSpec следующим образом:

  • Утверждение становится ожидание
  • Метод испытаний становится Пример кода
  • Тестовый пример становится Пример группы

Есть много таких ключевых слов, которые используются в одном контексте, но с похожими именами. Синтаксис RSpec обеспечивает легкость чтения и описывает поведение кода, тем самым предоставляя свободу программисту. Каждая среда тестирования работает в следующем порядке - с учетом некоторого контекста, когда происходит какое-либо событие, какой результат ожидается. Такие методы, как describe (), context () и it (), образуют аналогию и скелет соответственно тестового кода.

описывать()

Метод description () используется для описания класса, метода или группы примеров. Это внешний блок, который фактически содержит тестовый код и отображает характеристики заключенного в него кода. Этот метод принимает ряд аргументов и необязательный блок.[6] Однако обычно для описания поведения группы примеров используются один или два аргумента. Первый аргумент представляет ссылку на класс или модуль, тогда как второй аргумент является необязательным, тип данных которого будет Строка.[6] Группы примеров также могут быть вложенными. Пример использования метода description выглядит следующим образом:[6]

описывать Пользователь, "без остатка на счете" {....}=> Пользователь с нет учетная запись остаток средств

[6]

контекст ()

Блок context () используется для описания контекста, в котором используется класс или метод, упомянутые в блоке описания. В данном сценарии это можно рассматривать как псевдоним слова description (), и оба они могут использоваться взаимозаменяемо. Как правило, description () используется для вещей, а context () - для контекстов. Это помогает достичь разных результатов в разных сценариях. Упомянутый выше пример можно описать с помощью метода context () следующим образом:[6]

описывать Пользователь делать  контекст "нет остатка на счете" делать    ....  конецконец

[6] Использование context () упрощает сканирование файла спецификации и дает понять, к чему он относится.

Это()

Это метод RSpec, который описывает спецификации образца в контексте. Блок it () принимает строку в качестве аргумента, а строку после ключевого слова 'it' можно рассматривать как функцию, которую должен выполнять блок, или, другими словами, ее можно рассматривать как тестовый пример. Рассмотрим следующий пример:[6]

описывать Пользователь делать  контекст "нет остатка на счете" делать    Это «не разрешено санкционировать жилищный кредит» делать      ставит «Кредит не может быть санкционирован из-за отсутствия остатка на счете».    конец  конецконец

[6]

RSpec :: Ожидания

В RSpec ожидание - это инструкция, выражающая состояние, в котором ожидается что-то, в конкретный момент выполнения примера кода. RSpec использует простую структуру и такие ключевые слова, как должен() и не следует() чтобы выразить ожидания. Он поддерживает сопоставители, то есть объекты, которые пытаются сопоставить ожидаемый результат как для общих операций, так и для необычных выражений. Например, если ожидаемым результатом результата является числовое значение 5, ожидание RSpec, использующее сопоставление равный для этого же будет написано так:[6]

результат должен быть равен (5)

RSpec :: Моки

RSpec предоставляет библиотеку под названием RSpec :: Mocks для создания тестовые двойники которые помогают сосредоточиться на ролях, обнаружение интерфейса, но, прежде всего, прогресс без реализации зависимости тем самым обеспечивая изоляцию от связь и недетерминизм.[6]

Инструменты и интеграция

Есть много инструментов, которые поддерживают RSpec, например:

RSpec также предоставляет ряд утилит и точек расширения для поддержки расширения RSpec для удовлетворения специфических потребностей домена. Например, используя Метаданные связаны с группами и примерами для целей отчетности, используя глобальная конфигурация назначить блоки до и после каждой группе примеров, используя макросы и т.п.

Другие инструменты тестирования Ruby

Рекомендации

  1. ^ Основная команда RSpec. Проверено 8 апреля 2013 года.
  2. ^ "все версии rspec". rubygems.org. Получено 11 февраля 2014.
  3. ^ «Релизы - rspec / rspec». Получено 31 августа 2018 - через GitHub.
  4. ^ а б «Введение в RSpec | Проект Odin». www.theodinproject.com. Получено 2017-02-18.
  5. ^ «jMock - выразительная библиотека имитирующих объектов для Java». www.jmock.org. Получено 2017-02-18.
  6. ^ а б c d е ж грамм час я j k "Книга RSpec: разработка на основе поведения с RSpec, Cucumber и друзьями Дэвида Челимски, Дэйва Астелса, Зака ​​Денниса, Аслака Хеллесоя, Брайана Хельмкампа, Дэна Норта | Прагматичная книжная полка". pragprog.com. Получено 2017-02-11.


дальнейшее чтение

1. Начало работы с RSpec: (шаги установки) http://rspec.info/

2. Бек, К. (2014). Разработка через тестирование на примере. Бостон: Эддисон-Уэсли.

внешняя ссылка