Ich habe eine Methode, die wie folgt aufgerufen wird:Wie testen, dass diese Methode mit einer Mischung aus Argumenten und Schlüsselwortargumenten in rspec aufgerufen wird?
post_signup(user,
"fb signup completed",
app_context: current_app_id,
description: "Automatically Populated Via #{current_app_id}")
Die Argumente sind eine Mischung von Werten und Keyword-Argumente. Das, was mir im Test wichtig ist, ist app_context. Ich habe versucht, so etwas, aber es funktioniert nicht:
it "should log an event with an app_context" do
expect(controller).to receive(:post_signup).with(hash_including(app_context: current_app_id))
subject
end
und
it "should log an event with an app_context" do
expect(controller).to receive(:post_signup).with(current_app_id, any_args)
subject
end
Was kann ein Mensch tun?
nicht verzweifeln gut Bürger, die Magie von 'hash_including' wird dich noch retten! http://www.rubydoc.info/gems/rspec-mocks/RSpec/Mocks/ArgumentMatchers#hash_including-instance_method –
nur bemerkt, dass Sie tatsächlich versucht, dass ...: D aber es sieht aus wie Sie es als das erste Argument versucht. .. aber der Hash ist das zweite Argument, also benötigen Sie etwas wie: 'expect (controller) .to receive (: post_signup) .with (alles, hash_including (app_context: current_app_id))' damit das 'irgendetwas' mit dem ersten übereinstimmt Argument (das ist "Benutzer") und der Hash_Including wird dann auf den Rest davon verwendet (das ist der Hash ...) –
Machen Sie dies zur Antwort @TarynEast – Jwan622