尝试获取单元测试的ServerCertificateValidation值

时间:2016-03-03 14:06:49

标签: c# unit-testing

我有一个方法,我正在尝试编写单元测试。我想看到它相应地返回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.??);

}

1 个答案:

答案 0 :(得分:1)

您的val类型为RemoteCertificateValidationCallback,这意味着您要使用有效参数调用它。

   Assert.IsTrue(val(sender, certificate, chain, sslPolicyErrors));

由于您没有使用任何参数,并且在实现中始终返回true,因此可以将所有参数设置为虚拟值:

   Assert.IsTrue(val(null, null, null, SslPolicyErrors.None));