Rspec 如何在spec中模拟函数结果。

Rspec 如何在spec中模拟函数结果。,rspec,Rspec,我有一个从s3获取文件的方法 def self.fetch_file(file_name) s3 = Aws::S3::Client.new s3.get_object(bucket:'myBucket', key: file_name) end 然后我有一个调用fetch_file方法的方法 def self.import_file(file_name) response = fetch_file(file_name) .. do some staff 我想测试im

我有一个从s3获取文件的方法

def self.fetch_file(file_name)
  s3 = Aws::S3::Client.new
  s3.get_object(bucket:'myBucket', key: file_name)
end
然后我有一个调用fetch_file方法的方法

def self.import_file(file_name)
    response = fetch_file(file_name)
    .. do some staff
我想测试import_file方法,
如何模拟fetch_文件的结果?

您可以使用allow…to receive。。。和返回语法。本例中的示例

allow(ClassName).to receive(:fetch_file).and_return("filename")
expect(ClassName).to receive(:fetch\u file).and\u return(your\u mock)
其中ClassName是具有
import\u file
方法的类,
your\u mock
是要存根的替身。