我有一个方法,我正在尝试编写单元测试。我想看到它相应地返回true或false ......一个看似简单的测试让我感到茫然。请参阅第二个代码段中的注释,以了解代码何时运行。
代码:
public void SetSSSPolicyFlag()
{
if (_ignoreSSSPolicy)
ServicePointManager.ServerCertificateValidationCallback +=
(sender, certificate, chain, sslPolicyErrors) => true;
}
测试:
[TestMethod]
public void Ignore_SSPolicy_Test()
{
//Arrange
BaseController baseController = new BaseControllerBuilder()
.WithSSSPolicy(true) //this executes the method above
.Build();
//Act
var val = ServicePointManager.ServerCertificateValidationCallback;
//Assert
Assert.IsTrue(val.??);
}
答案 0 :(得分:1)
您的val类型为RemoteCertificateValidationCallback,这意味着您要使用有效参数调用它。
Assert.IsTrue(val(sender, certificate, chain, sslPolicyErrors));
由于您没有使用任何参数,并且在实现中始终返回true,因此可以将所有参数设置为虚拟值:
Assert.IsTrue(val(null, null, null, SslPolicyErrors.None));