При установке rspec я обнаружила, что установила не одну, а несколько библиотек. Я задумалась - почему?
В Readme репозитория rspec-metagem написано, что rspec- это есть rspec-metagem, который зависит от rspec-core, rspec-expectations and rspec-mocks. Команда ниже установит три независимые по сути библиотеки:
gem install rspec
Выжимка о свойствах каждой библиотеки
rspec-core
делает команду
rspec, которой мы запускаем собственно тесты, доступной из консоли;делает доступным команды, которые создают структуру тестов (
describe,context,it,specify,example,shared_examples,include_examples,shared_context,include_context,let,beforeи др. хуки,described_class).
rspec-expectations
обеспечивает команду expect со всем его хозяйством (RSpec::Matchers)
rspec-mocks
поддерживает методы для создания ненастоящих дублей объектов (test-doubles) (
double,instance_double,object_spyи др.);даёт возможность создать заглушку для методов дубля-объекта с помощью
allow, имитируя значение или последовательность значений, возвращаещаемое методом самого объекта;дает возможность проверить принимаемые аргументы дубля, например, когда дубль передается как аргумент в другую функцию, и внутри этот аргумент должен принять какое-то значение уже своим аргументом.
На рисунке ниже розовенький - rspec-mock, бирюзовый - rspec-expectations, а все остальное - rspec-core (и чуток собственно код).

Источники
Комментарии (3)

t3n3t
25.04.2023 16:05rspec-expectations
Чем отличается от давно ставших стандартом shoulda matchers? Или это о другом?
NixGuy
Какова цель этой статьи? На какую аудиторию она рассчитана?
Я немного ошарашен краткостью, поэтому могу задавать глупые вопросы.
aykuli Автор
я рассчитывала написать пост, но не поместилось (