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
のいずれかを使用できます。