/ / RSpec: como posso espionar interações com um objeto existente? - rubi, rspec

RSpec: como posso espionar as interações com um objeto existente? - rubi, rspec

Eu tenho um objeto stub existente, que estou usando como um colaborador em meus testes:

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

O objeto stub (cf_client) estava não criado usando rspec-mocks; é uma implementação falsa fornecida pelo aws-sdk gema, e tem propriedades úteis.

No entanto, ele não fornece verificação de mensagem, então espero agrupar em um proxy que registre as mensagens recebidas, para que eu possa verificá-las posteriormente, enquanto ainda delega para o objeto agrupado, por exemplo,

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)

O que eu quero / preciso é o proxy_spy método. Será que algo assim existe? Posso usar os proxies de verificação do RSpec aqui?

Respostas:

1 para resposta № 1

Você está procurando 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