簡體   English   中英

RSpec。 如何使用嵌套的私有方法(模擬/存根)測試方法?

[英]RSpec. How to test method with nested private method (mocking/stubbing)?

同志們,如何用嵌套的私有方法“ self.merge_op”測試方法“ self.default”? m noob in RSpec. What is more suitable for such case: mocking/stubbing? Functionality of file - it m noob in RSpec. What is more suitable for such case: mocking/stubbing? Functionality of file - it m noob in RSpec. What is more suitable for such case: mocking/stubbing? Functionality of file - it是某種MailClient

class MailClient
  def self.default
    options = self.merge_op
    @clients[options] = MailClient.send :new unless @clients.has_key?(options)
    @clients[options]
  end

def self.merge_op(opts={:smtp => {}, :pop3 => {}})
def_smtp_opts = {:address => settings.mail_smtp_server,
                 :port => settings.mail_smtp_port,
                 :domain => settings.mail_smtp_domain,
                 :user_name => settings.mail_smtp_user_name,
                 :password => settings.mail_smtp_user_pass,
                 :authentication => 'plain',
                 :enable_starttls_auto => true}

end

我只是測試default方法,而不考慮它使用私有方法來完成工作的事實。 找出給定輸入的預期輸出是什么。

我說這的主要原因是,它使您的測試更強大。 您可以更改default方法的內部工作方式,甚至可以取消私有方法,而無需更改測試。

我想考慮的唯一事情就是私有merge_op方法中的settings對象。 該對象實際上是default方法的輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM