0

同志们,如何用嵌套私有方法“self.merge_op”测试方法“self.default”?我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
4

1 回答 1

1

我只是测试该default方法,而不考虑它使用私有方法来完成其工作的事实。弄清楚给定输入的预期输出是什么。

我这么说的主要原因是它使您的测试更加健壮。您可以更改方法的内部工作default方式,甚至可以消除私有方法,而无需更改测试。

我唯一想到的模拟就是settings私有merge_op方法中的对象是什么。该对象实际上是该default方法的输入。

于 2013-08-25T18:56:14.910 回答