我应该使用It.Is <t>()作为测试参数吗?

时间:2017-10-31 23:46:37

标签: c# unit-testing testing moq

所以我对这个测试业务有点新,并使用Moq库。我想知道It.Is()方法的使用。

说我有一个课我想接受考试:

public class ZeroChecker
{
    public bool IsNotZero(int myInt)
    {
        return myInt != 0;
    }
}

所以我做了一个相应的类来测试:

public class ZeroCheckerTest
{
    [Fact]
    public void IsNotZero_ReturnsTrue_WhenInputIsNotZero()
    {
        //Arrange
        var myInt = It.Is<int>(i => i != 0);
        ZeroChecker target = new ZeroChecker();

        //Act
        bool actual = target.IsNotZero(myInt);

        //Assert
        Assert.True(actual);
    }
}

然而,我的测试失败了!当我查看调试器时,我注意到myInt设置为零!

所以我考虑的是:

1)我很笨,这不是人们应该如何使用It.Is()

2)Moq中有一个错误

在任何一种情况下,我将如何测试上述情况?切换到[InlineData()]并输入一些非零的整数,我想?

1 个答案:

答案 0 :(得分:0)

Moq It.Is()将在Mock<T>中使用。它用于在设置或验证模拟调用时匹配参数。我强烈建议你阅读Moq quickstart / documentation

此外,快速搜索C# unit testing with mock不会受到伤害。