繁体   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