rspec-core
rspec-coreは、コードの振る舞いを実行可能な例として記述するための構造を提供し、実行する例を制約し、出力を調整するためのrspecコマンドを提供します。
インストール
gem install rspec # rspec-core、rspec-expectations、rspec-mocks用 gem install rspec-core # rspec-coreのみ用 rspec --help
mainブランチに対して実行したいですか?依存するRSpecリポジトリも含める必要があります。以下をGemfileに追加してください:
%w[rspec rspec-core rspec-expectations rspec-mocks rspec-support].each do |lib|
  gem lib, :git => "https://github.com/rspec/#{lib}.git", :branch => 'main'
end
基本的な構造
RSpecでは、「describe」と「it」という単語を使用して、会話のような概念を表現することができます:
"注文を説明する。" "ラインアイテムの価格を合計する。"
RSpec.describe Order do
  it "sums the prices of its line items" do
    order = Order.new
    order.add_entry(LineItem.new(:item => Item.new(
      :price => Money.new(1.11, :USD)
    )))
    order.add_entry(LineItem.new(:item => Item.new(
      :price => Money.new(2.22, :USD),
      :quantity => 2
    )))
    expect(order.total).to eq(Money.new(5.55, :USD))
  end
end
describeメソッドはExampleGroupを作成  します。describeに渡されたブロック内で、itメソッドを使用して例を宣言することができます。
内部では、例のグループはdescribeに渡されたブロックが評価されるクラスです。itに渡されたブロックは、そのクラスの_インスタンス_のコンテキストで評価されます。
ネストされたグループ
describeまたはcontextメソッドを使用して、ネストされたグループを宣言することもできます:
RSpec.describe Order do
  context "with no items" do
    it "behaves one way" do
      # ...
    end
  end
  context "with one item" do
    it "behaves another way" do
      # ...
    end
  end
end
ネストされたグループは、外部の例グループクラスのサブクラスであり、自動的に継承のセマンティクスを提供します。
別名
describeまたはcontextを使用して例グループを宣言することができます。トップレベルの例グループでは、RSpecの下にdescribeとcontextが利用可能です。後方互換性のために、それらはmainオブジェクトとModuleにも利用可能であり、モンキーパッチを無効にしない限り利用できます。
グループ内で例を宣言するには、it、specify、またはexampleのいずれかを使用できます。