При установке 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)


  1. NixGuy
    25.04.2023 16:05

    Какова цель этой статьи? На какую аудиторию она рассчитана?

    Я немного ошарашен краткостью, поэтому могу задавать глупые вопросы.


    1. aykuli Автор
      25.04.2023 16:05

      я рассчитывала написать пост, но не поместилось (


  1. t3n3t
    25.04.2023 16:05

    rspec-expectations

    Чем отличается от давно ставших стандартом shoulda matchers? Или это о другом?