テストはターゲットが異なるのparamsと呼ばれているので、失敗を開始し、その後、別のアサーションはテストの終了前に失敗したので、私だけではない行方不明モック
から、この主張からのエラーを参照してください
これを正しく読んでいると、複数のアサーションが1つの仕様にあり、最初のものが失敗しているので、2番目または3番目のアサーションの失敗は見られませんか?
もしそうなら、私は失敗を集めるRSpec's aggregate_failures
introduced in v3.3を、使用することを検討したが、その後のアサーションを実行したい:
aggregate_failures("verifying response") do
expect(response.status).to eq(200)
expect(response.headers).to include("Content-Type" => "text/plain")
expect(response.body).to include("Success")
end
# Which gives you nice errors for all assertions
1) Client returns a successful response
Got 3 failures:
1.1) Got 3 failures from failure aggregation block "testing response".
# ./spec/use_block_form_spec.rb:18
# ./spec/use_block_form_spec.rb:10
1.1.1) Failure/Error: expect(response.status).to eq(200)
expected: 200
got: 404
(compared using ==)
# ./spec/use_block_form_spec.rb:19
1.1.2) Failure/Error: expect(response.headers).to include("Content-Type" => "application/json")
expected {"Content-Type" => "text/plain"} to include {"Content-Type" => "application/json"}
Diff:
@@ -1,2 +1,2 @@
-[{"Content-Type"=>"application/json"}]
+"Content-Type" => "text/plain",
# ./spec/use_block_form_spec.rb:20
1.1.3) Failure/Error: expect(response.body).to eq('{"message":"Success"}')
expected: "{\"message\":\"Success\"}"
got: "Not Found"
(compared using ==)
# ./spec/use_block_form_spec.rb:21
1.2) Failure/Error: expect(false).to be(true), "after hook failure"
after hook failure
# ./spec/use_block_form_spec.rb:6
# ./spec/use_block_form_spec.rb:10
1.3) Failure/Error: expect(false).to be(true), "around hook failure"
around hook failure
# ./spec/use_block_form_spec.rb:12
あなたはまたaggregate_failures
に記述するブロックにタグを付けることができます。
RSpec.describe ClassName, :aggregate_failures do
# stuff
end
これは素晴らしい情報です。ありがとうございます!しかし、私の問題は違っていました。@Dave Schweisguthは正しく理解しました。 – astgtciv
Adarshはあなたの問題をかなり修正していませんでしたが、 'aggregate_failures'はそれを解決します:あなたのテスト全体を' aggregate_failures'にラップすると、非モック失敗とモック失敗の両方が表示されます。 (上で述べたように、ノンモックの失敗は、あなたがテストしているものによって決まりますか? –