У меня есть тест rspec, который заглушает клиента S3.Я могу успешно заглушить метод на этом клиенте (скажем, метод A), во втором тесте я хочу заглушить другой метод (скажем, метод B).Однако второй тест никогда не использует заглушку.Если я переключаю порядок тестов, второй никогда не использует метод stubbed, независимо от его функциональности (скажем, я тестирую B до того, как A, B пройдет, а A потерпит неудачу).Что дает?
require 'spec_helper'
describe ANY_S3_ACCESSOR_CLASS do
before(:each) do
@bucket = 'any_bucket'
@key = 'any_key'
@s3_double = Aws::S3::Client.new(stub_responses: true)
Aws::S3::Client.stub(:new).with(anything).and_return(@s3_double)
end
context "getting an S3 document" do
it "should get an S3 document successfully" do
expected_get_output = 'any_output'
@s3_double.stub(:get_object).with(anything).and_return(expected_get_output)
returned_document = NY_S3_ACCESSOR.instance.get_document(@bucket, @key)
expect(returned_document).to eq(expected_get_output)
end
end
context "putting an S3 document" do
it "should put a file saved locally to disk to S3 successfully" do
expected_put_output = 'any_put_output'
csv_file = CSV.open("#{Rails.root}/test/fixtures/any_well_formed_csv.csv")
@s3_double.stub(:put_object).with(anything).and_return(expected_put_output)
actual_put_output = NY_S3_ACCESSOR.instance.write_local_file(@bucket, @key, csv_file.path)
expect(actual_put_output).to eq(expected_put_output)
end
end
end