【问题标题】:How to verify the number of private method calls in typemock如何验证 typemock 中私有方法调用的数量
【发布时间】:2016-02-18 09:52:04
【问题描述】:

我有一个公共方法,它调用私有方法,它在一个循环中。

public void FileManipulator(StreamReader file)
{
    string line;
    while ((line = file.ReadLine()) != null)
    {
        if (checkLine(line))
        {
            //some logic
        }
        else
        {
            putToExceptions(line);
        }

    }
}

private void putToExceptions(string line)
{
    //some logic
}

如何验证这个内部私有方法被调用的次数?我尝试使用Isolate.Verify.GetTimesCalled,但它显然不适合私有方法。

【问题讨论】:

  • 如果你需要,你是doing it wrong。读取文件和处理它是完全不同的事情。拆分该逻辑并单独测试。
  • 感谢您的建议,但这是我的学习任务。无法更改逻辑,但我需要按照我的要求对其进行测试

标签: c# unit-testing typemock


【解决方案1】:

免责声明。我在 Typemock 工作。

你说得对,Isolate.Verify.GetTimesCalled() 不适用于非公共方法。 您可以计算使用 Isolate.WhenCalled(..).DoInstead() 调用的方法数:

[TestMethod, Isolated]
public void CountPrivateCalls()
{
    int counter = 0;
    var fileChecker = new FileChecker();
    var testFile = new StreamReader("test.txt");

    Isolate.NonPublic.WhenCalled(fileChecker, "putToExceptions").DoInstead(context =>
    {
        counter++;
        context.WillCallOriginal();
    });

    fileChecker.FileManipulator(testFile);

    Assert.AreEqual(3, counter);
}

您可以阅读有关 NonPublic API here 的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2013-05-03
    • 2019-07-26
    相关资源
    最近更新 更多