如何在 typemock 中验证私有方法调用的数量

本文关键字:调用 有方法 验证 typemock | 更新日期: 2023-09-27 18:35:14

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

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,但它显然不适合私有方法。

如何在 typemock 中验证私有方法调用的数量

责声明。我在Typemock工作。

你是对的,Isolate.Verify.GetTimesCalled() 不适用于非公共方法。您可以计算使用 Isolate.WhenCalled(..) 调用的方法的数量。Do相反():

[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);
}

您可以在此处阅读有关非公共 API 的更多信息。