我无法让我的验证在数据库调用中工作。
我有一个方法,我只是想验证是否进行了数据库调用。
我不能发布真正的代码,但这是一个很接近的例子。
protected void ReportDB(uint waitTimeInMinutes)
{
//check database connection
Status dbStatus = Status.Ok;
string dbComment = "ok";
try
{
Data.GetActive("1");
}
catch (Exception ex)
{
dbComment = "Unable to access the database: " + ex.Message;
dbStatus = Status.Critical;
}
//Report Status.
}
所以基本上 GetActive() 方法只是进行数据库调用。如果它没有抛出异常,那么我们就很好,连接性就很好了。
我的测试方法是。
[TestMethod]
public void ReportDBStatusTest()
{
_fakeData.Setup(s => s.Data.GetActive(It.IsAny<string>()));
_unitUnderTest = new Service();
_unitUnderTest.ReportDB(0);
_fakeData.Verify(s => s.Data.GetActive(It.IsAny<string>()), Times.Once());
}
我调试并调用了该方法以及所有内容,但验证说它被称为 Times.Never。我想我可能只是误解了如何正确地做到这一点。
错误:
预期在模拟上调用一次,但为 0 次: s => s.Data.GetActive(It.IsAny()) 配置的设置和调用: