Jump to content

РСпец

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

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

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

Использование

[ редактировать ]

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

[ редактировать ]

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

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

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

описывать()

[ редактировать ]

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

describe User, "with no account balance" {....}
=> User with no account balance

[6]

контекст()

[ редактировать ]

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

describe User do
  context "has no account balance" do
    ....
  end
end

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

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

describe User do
  context "has no account balance" do
    it "is not allowed to sanction a housing loan" do
      puts "The loan cannot be sanctioned due to no balance in the account."
    end
  end
end

[6]

RSpec::Ожидания

[ редактировать ]

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

result.should equal(5)

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

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

[ редактировать ]

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

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

[ редактировать ]
  1. ^ Основная команда RSpec . Проверено 8 апреля 2013 г.
  2. ^ «все версии rspec» . Rubygems.org . Проверено 11 февраля 2014 г.
  3. ^ «Выпуск 3.13.0» . 4 февраля 2024 г. Проверено 20 февраля 2024 г.
  4. ^ Jump up to: а б «Введение в RSpec | Проект Odin» . www.theodinproject.com . Проверено 18 февраля 2017 г.
  5. ^ «jMock — выразительная библиотека макетов объектов для Java» . www.jmock.org . Проверено 18 февраля 2017 г.
  6. ^ Jump up to: а б с д и ж г час я дж к «Книга RSpec: разработка, основанная на поведении, с RSpec, Cucumber и друзьями Дэвида Челимски, Дэйва Астелса, Зака ​​Денниса, Аслака Хеллесоя, Брайана Хелмкампа, Дэна Норта | Прагматичная книжная полка» . pragprog.com . Проверено 11 февраля 2017 г.


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

[ редактировать ]

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

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

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7e2ba6e10e61aac3cf82dbd5ab2ca680__1711180140
URL1:https://arc.ask3.ru/arc/aa/7e/80/7e2ba6e10e61aac3cf82dbd5ab2ca680.html
Заголовок, (Title) документа по адресу, URL1:
RSpec - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)