Vì vậy, trong mã của tôi, tôi có phương pháp này, tôi đang cố gắng để kiểm tra:RSpec - sai số đối số khi tăng lỗi
# checks if a file already exists on S3
def file_exists?(storage_key)
begin
s3_resource.bucket(@bucket).object(storage_key).exists?
rescue Aws::S3::Errors::Forbidden => e
false
end
end
Bây giờ tôi đang cố gắng để làm cho hai trường hợp thử nghiệm - một cho khi tập tin tồn tại , và một cho khi nó không.
Tập trung vào trường hợp lỗi. Tôi muốn gỡ bỏ số exists?
để tăng lỗi Aws::S3::Errors::Forbidden
để phương thức file_exists?
sẽ trả về sai.
Đây là những gì mã kiểm tra của tôi trông giống như:
it "returns false if the file doesn't already exist" do
allow_any_instance_of(Aws::S3::Object).to receive(:exists?).and_raise(
Aws::S3::Errors::Forbidden
)
expect(instance.file_exists?('foo')).to be false
end
Chạy thử nghiệm này, tôi thấy điều này:
wrong number of arguments (given 0, expected 2)
# ./lib/s3_client_builder.rb:48:in `file_exists?'
Thực sự không rõ ràng những gì đang xảy ra ở đây, vì phương pháp file_exists?
chắc chắn không có một sự tinh thần của 2 cũng không phải là phương pháp exists?
Tôi đang stubbing.
Để chẩn đoán điều này, tôi đặt điểm ngắt trong khối begin
. Tôi thử chạy dòng <object>.exists?
và gặp lỗi tương tự.