RSpecは、Rubyプログラムを特定してテストするために使用されるBDDツールです。クラスとメソッドを指定してテストするために、つまりユニットテストのために使用されます。
rspecの宝石は、RSpecの3つの部分をもたらすメタ - 宝石です。これらの3つの部分も、このドキュメントを構成する方法です。
rspec
コマンドライン実行可能ファイル、 describe
、 context
及びit
等の方法、共有の例として、これは、に記載されているRSpecのコアトピック 。 expect
/ to
の期待の構文とRSpecの内蔵のマッチャ。 (これは、推奨されshould
期待構文も提供しています。) RSpec Expectationsのトピックに記載されています 。 double
、 allow
、 expect
、 receive
、 have_received
などです。これはRSpec Mocksのトピックで記述されています 。 rspec-rails gemもあります。これは、Railsアプリケーションで使用されるクラスのタイプをテストするためのサポートと、ユーザの視点からアプリケーションをテストするフィーチャ仕様(アクセプタンステスト)のサポートをサポートするRSpecを拡張します。
RSpecとrspec-railsの公式ドキュメントは、ここにあります: https ://www.relishapp.com/rspec
greeter.rb(プロジェクトのどこにでも):
class Greeter
def greet
"Hello, world!"
end
end
spec / greeter_spec.rbの場合:
require_relative '../greeter.rb'
RSpec.describe Greeter do
describe '#greet' do
it "says hello" do
expect(Greeter.new.greet).to eq("Hello, world!")
end
end
end
だから私たちのファイル構造は次のようになります:
$ tree .
.
├── greeter.rb
└── spec
└── greeter_spec.rb
1 directory, 2 files
出力
$rspec greeter_spec.rb
Finished in 0.00063 seconds (files took 0.06514 seconds to load)
1 example, 0 failures
RSpecの用語では、ファイルはGreeter
「仕様」であり、 it
ブロックは「例」です。 expect
のラインはexpect
です。期待が満たされても何も起こらず、テストに合格します。そうでない場合、テストは失敗します。
この例では、 describe
ブロックをネストすることもできます。この場合、 greet
メソッドがGreet
クラスの一部であることを伝えるためです。 #greet
の#
は、 greet
がインスタンスメソッド(クラスメソッドの場合は '。'とは対照的)であることを示すgreet
慣例に過ぎません。 RSpecは文字列をまったく解釈しないので、別の文字列を使用するか、そのdescribe
ブロックを完全に省略することができます。
RSpec gemをインストールする最も一般的な方法は、 Bundlerを使用することです。この行をアプリケーションのGemfile
追加してください:
gem 'rspec'
次に、 bundle
を実行して依存関係をインストールします。
$ bundle
あるいは、gemを手動でインストールすることもできます:
$ gem install rspec
gemをインストールしたら、次のコマンドを実行します。
rspec --init
これにより、テスト用のspec
フォルダと、次の設定ファイルが作成されます。
spec
ディレクトリspec/spec_helper.rb
ファイル.rspec
ファイル