Я новичок в ruby и rspec. У меня есть модуль, который взаимодействует с S3 в рубине. В моем коде я:Как мне высмеять S3Object.read do | chunk | используя rspec
- создать новый S3 экземпляр: s3 = AWS :: S3.new()
- Получите мое ведро: @ s3bucket = s3.buckets [@bucket]
- Retrieve мой S3Object: объект = @ s3bucket.objects [ключ]
Наконец, я сохранить объект в локальный файл:
File.open(local_filename, 'wb') do |s3file| object.read do |chunk| return completed if stop? s3file.write(chunk) end
Мой код работает хорошо, но у меня возникают проблемы с его тестированием,
конкретно У меня проблемы с издевательством object.read do | chunk | часть.
Независимо от того, что я пытаюсь, кусок оказывается пустым.
Может ли кто-нибудь помочь?
Спасибо.
Я нашел этот драгоценный камень: https://github.com/jubos/fake-s3. Если вы хотите вручную обмануть его, просто поместите в свой метод bind.pry или byebug debugger и выясните класс и содержимое объекта S3. Затем do allow_any_instance_of (<класс S3>) для получения (<метод, который вы вызываете на нем>). And_return (<возвращаемое значение вашего метода>) –
Я пробовал это, я думаю, что у меня проблема с пониманием объекта вернитесь в часть and_return. try string, stringio, byte array, File.open. ничего не получилось. в моем тесте я все равно не получаю никаких кусков, и s3file пуст –
См. мой ответ ниже и дайте мне знать, если у вас есть какие-либо вопросы. Я бы поставил его в комментарии, но в этом случае нет форматирования кода. –