如何用moq模拟检查数据库中数据的if条件
本文关键字:数据 if 条件 数据库 何用 moq 模拟 检查 | 更新日期: 2023-09-27 17:50:49
我试图模拟一个方法,首先检查数据是否存在于数据库中,如果不是,那么它调用保存方法。我如何模拟if条件?
代码是这样的
public MyCode AddMyCode(MyCode myCode)
{
int workingUnitId = _sessionManager.CurrentUser.WorkingUnit.Id;
if (!_db.MyCodes.Any(d => d.Code == myCode.Code && d.UnitId == this.CurrentUserParentUnitId))
{
_db.MyCodes.Add(myCode);
SaveMyCode();
return myCode;
}
return myCode;
}
您应该使用接口来解耦数据库访问代码(这里是EF)和业务逻辑。这样你就可以测试你的逻辑,而不需要一个真正的数据库。
一个好的教程可能是这样的:http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
您可以通过setting up some dummy data into MyCodes
模拟数据库调用,并查看其余代码是否正常工作。
更新:
包含如下静态方法:
public static Mock<ControllerContext> MockSession()
{
var controllerContext = new Mock<ControllerContext>();
controllerContext.Setup(X => X.HttpContext.Session["UserName"]).Returns("Avinash");
return controllerContext;
}
那么你可以这样做:
In your test method,
使用上面的静态方法模拟会话:
target.ControllerContext = MockSession().Object;
这将模拟会话。以上示例来自asp.net MVC Prespective
。我不确定如何使用正常的web表单。