Sto configurando un Mock come mostrato di seguito. È passato nel costruttore del bersaglio. L'obiettivo ha un metodo Decrypt che viene chiamato due volte nel corso della vita del target. Ogni volta che viene chiamato il metodo Decrypt, viene disattivato il certificato "newed" nel Setup. Tuttavia, quando si richiama l'oggetto Decrypt la seconda volta, ottengo un metodo ObjectDisposed al tentativo di decrittografia. Se sostituisco questo Mock con un'implementazione Fake di ICertificateHelperAdapter che chiama GetCertificate(), quindi la seconda chiamata a Decrypt funziona correttamente.Chiamate successive a un risultato Mock.Setup nella stessa istanza dell'oggetto
Sto deducendo che quando uso il Mock, non mi sta restituendo una nuova istanza dell'oggetto nelle chiamate successive a GetCertificate. È questo in base alla progettazione?
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");
}
Questo non funziona se imposto le proprietà e non i metodi. – Raj