typemock中如何验证私有方法调用次数
How to verify the number of private method calls in typemock
我有一个public方法,它调用私有方法,它在一个循环中。
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 工作。
你说得对,Isolate.Verify.GetTimesCalled() 不适用于非 public 方法。
您可以使用 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。
我有一个public方法,它调用私有方法,它在一个循环中。
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 工作。
你说得对,Isolate.Verify.GetTimesCalled() 不适用于非 public 方法。 您可以使用 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。