Estoy configurando una simulación como se muestra a continuación. Se pasa al constructor del objetivo. El objetivo tiene un método de descifrado que se llama dos veces durante la vida del objetivo. Cada vez que se llama al método Decrypt, descarta el certificado que se "actualiza" en la configuración. Sin embargo, al llamar al objeto Decrypt la segunda vez, obtengo un método ObjectDisposed al intentar el descifrado. Si reemplazo este simulacro con una implementación falsa de ICertificateHelperAdapter que llama a GetCertificate(), entonces la segunda llamada a Decrypt funciona correctamente.Llamadas posteriores a un resultado de Mock.Setup en la misma instancia de objeto
Deduzco que cuando uso el simulacro, no me devuelve una nueva instancia del objeto en llamadas posteriores a GetCertificate. ¿Esto es por diseño?
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");
}
Esto no funciona si configuro propiedades y no métodos. – Raj