/ / RSpec: Wie kann ich Interaktionen mit einem vorhandenen Objekt ausspionieren? - Rubin, rspec

RSpec: Wie kann ich Interaktionen mit einem vorhandenen Objekt ausspionieren? - Rubin, Rspec

Ich habe ein vorhandenes Stub-Objekt, das ich als Mitbearbeiter in meinen Tests verwende:

cf_client = Aws::CloudFormation::Client.new(:stub_responses => true)
stack = described_class.new("name", cf_client)

Das Stub-Objekt (cf_client) war nicht erstellt mit rspec-mocks; es ist eine gefälschte Implementierung der aws-sdk Edelstein und hat nützliche Eigenschaften.

Es wird jedoch keine Nachrichtenüberprüfung bereitgestellt, daher hoffe ich, einen Proxy einzuschließen, der die empfangenen Nachrichten aufzeichnet, damit ich sie später überprüfen kann, während ich weiterhin an das umschlossene Objekt delegiere, z.

cf_client = proxy_spy(Aws::CloudFormation::Client.new(:stub_responses => true))
stack = described_class.new("name", cf_client)

stack.create

expect(cf_client).to have_received(:create_stack)

Ich will / brauche das proxy_spy Methode. Gibt es so etwas? Kann ich hier RSpecs überprüfende Proxys verwenden?

Antworten:

1 für die Antwort № 1

Du schaust nach and_call_original.

cf_client = Aws::CloudFormation::Client.new(:stub_responses => true)
expect(cf_client).to_receive(:create_stack).and_call_original
stack = described_class.new("name", cf_client)
stack.create