メインコンテンツまでスキップ

rspec-mocksをRSpecの外部で使用する(スタンドアロンモード)

require "rspec/mocks/standalone"を使用して、REPL(例:IRB)やワンオフのスクリプトなど、RSpec環境の外部でAPIをトップレベル(例:main)で公開します。

RSpecの外部でメッセージを許可する

以下の内容で「example.rb」という名前のファイルがあるとします。

require "rspec/mocks/standalone"

greeter = double("greeter")
allow(greeter).to receive(:say_hi) { "Hello!" }
puts greeter.say_hi

ruby example.rbを実行すると、

出力に「Hello!」が含まれるはずです。

RSpecの外部でメッセージを期待する

以下の内容で「example.rb」という名前のファイルがあるとします。

require "rspec/mocks/standalone"

greeter = double("greeter")
expect(greeter).to receive(:say_hi)

RSpec::Mocks.verify

ruby example.rbを実行すると、

以下の出力で失敗するはずです。

| (Double "greeter").say_hi(*(any args)) | | RSpec::Mocks::MockExpectationError | | 期待値: 1回の呼び出し(任意の引数) | | 受信値: 0回の呼び出し(任意の引数) |