次のようにMockを設定しています。それはターゲットのコンストラクタに渡されます。ターゲットには、ターゲットの有効期間内に2回呼び出されるDecryptメソッドがあります。 Decryptメソッドが呼び出されるたびに、セットアップで「新規作成」された証明書が破棄されます。しかし、2回目にDecryptオブジェクトを呼び出すとき、私は解読を試みるとObjectDisposedメソッドを取得しています。このモックを、GetCertificate()を呼び出すICertificateHelperAdapterの偽実装に置き換えると、Decryptへの2回目の呼び出しが正しく機能します。同じオブジェクトインスタンスのMock.Setupの後続呼び出し
私はMockを使用すると、その後のGetCertificateの呼び出しでオブジェクトの新しいインスタンスが返されないと推測しています。これは設計によるものですか?
private Mock<ICertificateHelperAdapter> GetCertificateHelperAdapter()
{
Mock<ICertificateHelperAdapter> certificateHelper = new Mock<ICertificateHelperAdapter>();
certificateHelper.Setup(
ch => ch.GetCertificate(CertStoreName.My, StoreLocation.LocalMachine, It.IsAny<string>())).Returns(this.GetCertificate()).Verifiable();
return certificateHelper;
}
private X509Certificate2 GetCertificate()
{
return new X509Certificate2(Environment.CurrentDirectory + "\\" + "azureconfig.pfx", "dingos");
}
プロパティを設定していて、メソッドではない場合、これは機能しません。 – Raj