代码之家  ›  专栏  ›  技术社区  ›  brendan davton

如何进行空检查?

  •  0
  • brendan davton  · 技术社区  · 1 年前

    我的应用程序由C#开发(Microsoft.EntityFrameworkCore,版本6.0.25)。

    我使用Moq(版本4.20.70)和NUnit(版本4.0.1)进行单元测试用例

    我尝试了以下方法进行空检查,

    [TestCase(null)]
    public void TestCreateClient_ShouldThrowException_IfPasswordIsNull(string certificatePassword)
    {
        //Arrange
        var clientFactory = new ClientFactory(_mockRepositoryWrapper.Object, _alertService.Object);
    
        //Act
        var exception = Assert.ThrowsAsync<ArgumentNullException>(() => clientFactory.CreateClientAsync(certificatePassword, TestValues.CERTIFICATE_BASE64, TestValues.APP_ID, TestValues.DOMAIN, TestValues.CUSTOMER_ID, TestValues.ENVIRONMENT_ID, TestValues.LOCALE));
    
        //Assert
        Assert.That(exception.ParamName, Is.EqualTo("certificatePassword can not be null or empty"));
    }
    

    但我得到了以下错误

    错误NUnit1001:类型的位置“0”处的参数值 <null> 不能分配给字符串类型的参数“certificatePassword”

    2 回复  |  直到 1 年前
        1
  •  0
  •   Pathum Senaratna    1 年前

    正在添加!像这样在null之后->[TestCase(null!)]应该可以解决您遇到的错误。这告诉编译器将null视为certificatePassword参数的有效值。

        2
  •  0
  •   Abdul Moiz    1 年前

    当将NUnit与可为null的参数一起使用时,应该使用 TestCase(null) 对于可为null的类型。然而,由于 string 是引用类型并且已经可以为null,应该使用 TestCase((string)null) 显式传递 null 价值

        [TestCase((string)null)]
        public void TestCreateClient_ShouldThrowException_IfPasswordIsNull(string certificatePassword)
        {
            // Arrange
            var clientFactory = new ClientFactory(_mockRepositoryWrapper.Object, _alertService.Object);
        
            // Act
            var exception = Assert.ThrowsAsync<ArgumentNullException>(() => clientFactory.CreateClientAsync(
                certificatePassword,
                TestValues.CERTIFICATE_BASE64,
                TestValues.APP_ID,
                TestValues.DOMAIN,
                TestValues.CUSTOMER_ID,
                TestValues.ENVIRONMENT_ID,
                TestValues.LOCALE));
        
            // Assert
            Assert.That(exception.ParamName, Is.EqualTo("certificatePassword can not be null or empty"));
    
    }