如何在服务初始化中存根实例变量?

时间:2016-06-20 14:27:47

标签: ruby-on-rails-4 rspec

我有一个服务调用另一个ftp服务,该服务从ftp服务器获取文件并存储在实例变量中。

现在在测试服务时我不想点击ftp服务,而是想从fixtures中选择文件。

那么,如何将实例变量存根以从fixture中选择文件?

我在Rspec测试用例中尝试了以下before_each方法,但是没有用。

  def set_scheme_details_file_path
    raw_file_path = '/spec/fixtures/backoffice_test_data/currentnav.ace'
    @scheme_details_file_path = File.join(Rails.root, raw_file_path)
  end

服务初始化调用ftp服务以获取文件对象的代码:

  class ImportServices::ImportSchemeDetail < BackOffice::ImportServices::Import
    def initialize(*args)
      @scheme_details_file_path = BackOffice::Util::Ftp.call(args[0])
      @scheme_details_set = []
      @result = {}
      @all_schemes = Scheme.generate_scheme_code_id_map
    end

任何帮助或建议都会有所帮助。 谢谢!

1 个答案:

答案 0 :(得分:2)

allow(BackOffice::Util::Ftp).to receive(:call).and_return(some_path)

https://github.com/rspec/rspec-mocks