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

メッセージの期待

expect(...).to receive(...) を使用して、テストダブル 上でメッセージの期待を設定します。期待されたメッセージが満たされない場合、例が完了するときに失敗が発生します。また、expect(...).not_to receive(...) を使用して、否定的なメッセージの期待を設定することもできます。

失敗する正のメッセージの期待

次の内容で "unfulfilled_message_expectation_spec.rb" という名前のファイルがあるとします:

RSpec.describe "An unfulfilled positive message expectation" do
it "triggers a failure" do
dbl = double("Some Collaborator")
expect(dbl).to receive(:foo)
end
end

rspec unfulfilled_message_expectation_spec.rb を実行すると、

次のように失敗するはずです:

  1) An unfulfilled positive message expectation triggers a failure
Failure/Error: expect(dbl).to receive(:foo)

(Double "Some Collaborator").foo(*(any args))
expected: 1 time with any arguments
received: 0 times with any arguments

成功する正のメッセージの期待

次の内容で "fulfilled_message_expectation_spec.rb" という名前のファイルがあるとします:

RSpec.describe "A fulfilled positive message expectation" do
it "passes" do
dbl = double("Some Collaborator")
expect(dbl).to receive(:foo)
dbl.foo
end
end

rspec fulfilled_message_expectation_spec.rb を実行すると、

すべての例が成功するはずです。

失敗する負のメッセージの期待

次の内容で "negative_message_expectation_spec.rb" という名前のファイルがあるとします:

RSpec.describe "A negative message expectation" do
it "fails when the message is received" do
dbl = double("Some Collaborator").as_null_object
expect(dbl).not_to receive(:foo)
dbl.foo
end
end

rspec negative_message_expectation_spec.rb を実行すると、

次のように失敗するはずです:

  1) A negative message expectation fails when the message is received
Failure/Error: dbl.foo

(Double "Some Collaborator").foo(no args)
expected: 0 times with any arguments
received: 1 time

成功する負のメッセージの期待

次の内容で "negative_message_expectation_spec.rb" という名前のファイルがあるとします:

RSpec.describe "A negative message expectation" do
it "passes if the message is never received" do
dbl = double("Some Collaborator").as_null_object
expect(dbl).not_to receive(:foo)
end
end

rspec negative_message_expectation_spec.rb を実行すると、

すべての例が成功するはずです。

カスタムの失敗メッセージを持つ失敗する正のメッセージの期待

次の内容で "example_spec.rb" という名前のファイルがあるとします:

RSpec.describe "An unfulfilled positive message expectation" do
it "triggers a failure" do
dbl = double
expect(dbl).to receive(:foo), "dbl never calls :foo"
end
end

rspec example_spec.rb --format documentation を実行すると、

出力に次の内容が含まれるはずです:

  1) An unfulfilled positive message expectation triggers a failure
Failure/Error: expect(dbl).to receive(:foo), "dbl never calls :foo"
dbl never calls :foo

カスタムの失敗メッセージを持つ失敗する負のメッセージの期待

次の内容で "example_spec.rb" という名前のファイルがあるとします:

RSpec.describe "A negative message expectation" do
it "fails when the message is received" do
dbl = double
expect(dbl).not_to receive(:foo), "dbl called :foo but is not supposed to"
dbl.foo
end
end

rspec example_spec.rb --format documentation を実行すると、

出力に次の内容が含まれるはずです:

  1) A negative message expectation fails when the message is received
Failure/Error: dbl.foo
dbl called :foo but is not supposed to

I apologize, but I am unable to receive or process any files or attachments. However, you can copy and paste the Markdown content here, and I will translate it for you.