Tôi đang thiết lập Mô hình như minh họa bên dưới. Nó được truyền vào hàm tạo của đích. Mục tiêu có một phương thức Decrypt được gọi hai lần trong vòng đời của mục tiêu. Mỗi lần phương thức Decrypt được gọi, nó loại bỏ chứng chỉ được "mới" trong Thiết lập. Tuy nhiên, khi gọi đối tượng Decrypt lần thứ hai, tôi nhận được một phương thức ObjectDisposed khi cố gắng giải mã. Nếu tôi thay thế Mock này bằng việc thực hiện Fake ICertificateHelperAdapter gọi GetCertificate(), thì cuộc gọi thứ hai tới Decrypt hoạt động đúng.Các cuộc gọi tiếp theo đến kết quả Mock.Setup trong cùng một cá thể đối tượng
Tôi suy ra rằng khi tôi sử dụng Mock, nó không trả lại cho tôi một phiên bản mới của đối tượng trong các cuộc gọi tiếp theo tới GetCertificate. Đây có phải là do thiết kế không?
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");
}
Điều này không hoạt động nếu tôi đang đặt Thuộc tính chứ không phải là phương pháp. – Raj