【发布时间】:2015-09-17 09:13:33
【问题描述】:
可以使用Moq and dependency injection 测试方法是否被调用。但是,是否可以测试一个类中的一个方法是否调用同一个类中的另一个方法?
例如,我想测试如果我记录了某个异常,是否也会记录一条信息消息。
方法是:
public void Error(string message, Exception exception, long logId = 0)
{
var int32 = (int)logId;
Info("Id was converted to an int so that it would fit in the log: " + logId, int32);
Error(message, exception, int32);
}
这是我对它进行单元测试的尝试。测试失败,有什么办法可以做到吗?
void logging_an_error_with_a_long_id_also_logs_info()
{
var mock = new Mock<ILogger>();
var testedClass = new Logger();
var counter = 0;
testedClass.Error("test" + counter++, new Exception("test" + counter), Int64.MaxValue);
mock.Verify(m => m.Info(It.IsAny<string>(), It.IsAny<int>()));
}
由于Info 和Error 方法在同一个类(ClassA)中,我不相信我可以将ClassA 作为依赖项传递给ClassA。那么它不需要测试吗?
【问题讨论】:
-
看看here.
标签: c# unit-testing moq