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. メソッドが、それを呼び出す必要のあるオブジェクトから実際に呼び出されているかどうか。

ただし、どちらの場合も、ライブラリをモックすることには、実際の証明書をフィクスチャデータとして含めることと比較して、実際のメリットはないようです。実際にコードを実行するには、フィクスチャはモックよりも優れています。

于 2012-06-07T17:20:13.690 に答える