我正在尝试使用Moq在C#中为以下功能编写单元测试,但是发现我有点不知所措,将验证和其他Moq概念缠起来。
public X509Certificate GetCertificate(string certificateName)
{
var settingOverride = this.settings.SecretOverridesSetting.FirstOrDefault(secret => secret.Name.Equals(certificateName, StringComparison.InvariantCultureIgnoreCase));
if (settingOverride != null)
{
X509Certificate targetCertificate;
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certColl = store.Certificates.Find(X509FindType.FindByThumbprint, settingOverride.Value, false);
if (certColl.Count == 0)
{
return null;
}
targetCertificate = certColl[0];
store.Close();
return targetCertificate;
}
else
{
return SecretStoreClientHelper.GetCertificate(certificateName);
}
}
这是我第一次用任何语言编写函数的单元测试。 有人可以在一些可以使用Moq的单元测试方案中为我提供帮助。
答案 0 :(得分:0)
您需要以不与任何实现紧密结合的方式来重构此代码。因为您不能使用MOQ模拟类的非虚拟方法。
请参考链接https://github.com/Moq/moq4/wiki/Quickstart,以获取有关使用MOQ创建测试方法的更多详细信息。