2

我有一个方法:

require 'openssl'

def extract_creds(data)
  pfx = OpenSSL::PKCS12.new(data)

  { :certificate => pfx.certificate.to_pem, :key => pfx.key.to_pem }
rescue
  # handle error
end

我想为它写一个 rspec 示例。我应该如何正确模拟 pfx 对象?

4

1 回答 1

2

为什么这可能是错误的问题

当您想要执行以下操作时,通常应该使用模拟:

  1. 避免在被测单元之外测试系统行为。
  2. 避免昂贵的操作,例如系统间测试。
  3. 确保调用了一个对象,但您不关心结果。

在这种情况下,不清楚您为什么要测试这种行为,或者您期望的结果是什么,或者为什么您认为您可能不会得到它。在大多数情况下,测试一个经过良好测试的外部库并不是正确的做法。

我认为正确的问题是

因此,根据您真正想要测试的内容,您可能需要检查:

  1. 该方法是否引发任何异常。
  2. 您的方法是否实际上是从应该调用它的某个对象调用的。

但是,在这两种情况下,模拟库与包含真实证书作为固定数据相比似乎没有真正的好处。对于实际执行代码来说,fixtures 比 mocks 更好。

于 2012-06-07T17:20:13.690 回答