Minitestとの統合
Minitestと一緒にrspec-mocksを使用するには、単純にrspec/mocks/minitest_integration
をrequireしてください。
Minitest::Testでrspec-mocksを使用する
次の内容で「test/rspec_mocks_test.rb」という名前のファイルを作成します。
require 'minitest/autorun'
require 'rspec/mocks/minitest_integration'
class RSpecMocksTest < Minitest::Test
def test_passing_positive_expectation
dbl = double
expect(dbl).to receive(:message)
dbl.message
end
def test_failing_positive_expectation
dbl = double
expect(dbl).to receive(:message)
end
def test_passing_negative_expectation
dbl = double
expect(dbl).to_not receive(:message)
end
def test_failing_negative_expectation
dbl = double
expect(dbl).to_not receive(:message)
dbl.message
end
def test_passing_positive_spy_expectation
bond = spy
bond.james
expect(bond).to have_received(:james)
end
def test_failing_positive_spy_expectation
bond = spy
expect(bond).to have_received(:james)
end
def test_passing_negative_spy_expectation
bond = spy
expect(bond).not_to have_received(:james)
end
def test_failing_negative_spy_expectation
bond = spy
bond.james
expect(bond).not_to have_received(:james)
end
end
次に、次のコマンドを実行します。
ruby test/rspec_mocks_test.rb --seed 0
すると、以下の出力でテストが失敗するはずです。
| 1) 失敗: | | RSpecMocksTest#test_failing_positive_expectation | | (Double (anonymous)).message((any args)) | | 期待値: 1回の引数なしでの呼び出し | | 実際の結果: 引数なしでの呼び出しは0回 | | | | 2) 失敗: | | RSpecMocksTest#test_failing_negative_expectation | | (Double (anonymous)).message(no args) | | 期待値: 引数なしでの呼び出しは0回 | | 実際の結果: 引数なしでの呼び出しは1回 | | | | 3) 失敗: | | RSpecMocksTest#test_failing_positive_spy_expectation | | (Double (anonymous)).james((any args)) | | 期待値: 1回の引数なしでの呼び出し | | 実際の結果: 引数なしでの呼び出しは0回 | | | | 4) 失敗: | | RSpecMocksTest#test_failing_negative_spy_expectation | | (Double (anonymous)).james(no args) | | 期待値: 引数なしでの呼び出しは0 回 | | 実際の結果: 引数なしでの呼び出しは1回 | | | | 8回実行、0アサーション、4失敗、0エラー、0スキップ |
Minitest::Specでrspec-mocksを使用する
次の内容で「spec/rspec_mocks_spec.rb」という名前のファイルを作成します。
require 'minitest/autorun'
require 'minitest/spec'
require 'rspec/mocks/minitest_integration'
describe "Minitest Spec integration" do
it 'passes a positive expectation' do
dbl = double
expect(dbl).to receive(:message)
dbl.message
end
it 'fails a positive expectation' do
dbl = double
expect(dbl).to receive(:message)
end
it 'passes a negative expectation (using to_not)' do
dbl = double
expect(dbl).to_not receive(:message)
end
it 'fails a negative expectation (using not_to)' do
dbl = double
expect(dbl).not_to receive(:message)
dbl.message
end
end
次に、次のコマンドを実行します。
ruby spec/rspec_mocks_spec.rb --seed 0
すると、以下の出力でテストが失敗するはずです。
| 1) 失敗: | | Minitest Spec integration#test_0002_fails a positive expectation | | (Double (anonymous)).message(*(any args)) | | 期待値: 1回の引数なしでの呼び出し | | 実際の結果: 引数なしでの呼び出しは0回 | | | | 2) 失敗: | | Minitest Spec integration#test_0004_fails a negative expectation (using not_to) | | (Double (anonymous)).message(no args) | | 期待値: 引数なしでの呼び出しは0回 | | 実際の結果: 引数なしでの呼び出しは1回 | | | | 4回実行、4アサーション、2失敗、0エラー、0スキップ |
Minitest::Specを使用して、rspec-mocksをrspec-expectationsの前に読み込む
以下の内容を持つ "spec/rspec_mocks_spec.rb" という名前のファイルがあるとします。
require 'minitest/autorun'
require 'minitest/spec'
require 'rspec/mocks/minitest_integration'
require 'rspec/expectations/minitest_integration'
describe "Minitest Spec integration" do
it 'passes a positive expectation' do
dbl = double
expect(dbl).to receive(:message)
dbl.message
end
it 'fails a positive expectation' do
dbl = double
expect(dbl).to receive(:message)
end
it 'passes a negative expectation (using to_not)' do
dbl = double
expect(dbl).to_not receive(:message)
end
it 'fails a negative expectation (using not_to)' do
dbl = double
expect(dbl).not_to receive(:message)
dbl.message
end
it 'can use both minitest and rspec expectations' do
expect(1 + 3).must_equal 4
expect(1 + 3).to eq 4
end
end
ruby spec/rspec_mocks_spec.rb --seed 0
を実行すると、
以下の出力で失敗するはずです。
| 1) 失敗: | | Minitest Specの統合#test_0002_ポジティブな期待値が失敗する場合 | | (Double (anonymous)).message(*(any args)) | | 期待値: 任意の引数を持つ1回の呼び出し | | 受け取った値: 任意の引数を持つ0回の呼び出し | | | | 2) 失敗: | | Minitest Specの統合#test_0004_ネガティブな期待値が失敗する場合 (not_toを使用) | | (Double (anonymous)).message(no args) | | 期待値: 任意の引数を持たない0回の呼び出し | | 受け取った値: 1回の呼び出し | | | | 5回実行、6回アサーション、2回失敗、0回エラー、0回スキップ |
Minitest::Specを使用して、rspec-mocksをrspec-expectationsの後に読み込む
以下の内容を持つ "spec/rspec_mocks_spec.rb" という名前のファイルがあるとします。
require 'minitest/autorun'
require 'minitest/spec'
require 'rspec/expectations/minitest_integration'
require 'rspec/mocks/minitest_integration'
describe "Minitest Spec integration" do
it 'passes a positive expectation' do
dbl = double
expect(dbl).to receive(:message)
dbl.message
end
it 'fails a positive expectation' do
dbl = double
expect(dbl).to receive(:message)
end
it 'passes a negative expectation (using to_not)' do
dbl = double
expect(dbl).to_not receive(:message)
end
it 'fails a negative expectation (using not_to)' do
dbl = double
expect(dbl).not_to receive(:message)
dbl.message
end
it 'can use both minitest and rspec expectations' do
expect(1 + 3).must_equal 4
expect(1 + 3).to eq 4
end
end
ruby spec/rspec_mocks_spec.rb --seed 0
を実行すると、
以下の出力で失敗するはずです。
| 1) 失敗: | | Minitest Specの統合#test_0002_ポジティブな期待値が失敗する場合 | | (Double (anonymous)).message(*(any args)) | | 期待値: 任意の引数を持つ1回の呼び出し | | 受け取った値: 任意の引数を持つ0回の呼び出し | | | | 2) 失敗: | | Minitest Specの統合#test_0004_ネガティブな期待値が失敗する場合 (not_toを使用) | | (Double (anonymous)).message(no args) | | 期待値: 任意の引数を持たない0回の呼び出し | | 受け取った値: 1回の呼び出し | | | | 5回実行、6回アサーション、2回失敗、0回エラー、0回スキップ |
Sure, please paste the Markdown content you would like me to translate.