c# - 控制器方法不返回最小起订量数据
问题描述
我正在尝试为控制器编写单元测试方法,但是我用测试数据模拟的方法没有返回它。
我的控制器:
IDataService _dataService = new DataService();
[HttpPost]
public JsonResult VerifyCredentialsAndGetUserData(string email, string password)
{
return Json(this._dataService.VerifyCustomerAndReturnHisID(email, password), JsonRequestBehavior.AllowGet);
}
存在方法 VerifyCustomerAndReturnHisID 的我的库:
public int VerifyCustomerAndReturnHisID(string email, string password)
{
var emailToCheck = new SqlParameter("@Email", email.ToLowerInvariant());
var pass = new SqlParameter("@Password", password);
var result = dbContext.Customer.SqlQuery("SELECT * FROM Customer WHERE Email = @Email AND Password = @Password", new SqlParameter("@Email", email.ToLowerInvariant()), new SqlParameter("@Password", password)).ToList();
if (result.Count() > 0)
{
return result.FirstOrDefault().ID;
}
else
{
return 0;
}
}
我的测试方法:
[TestMethod]
public void VerifyCredentialsAndGetUserData()
{
var user = new ApplicationDatabase.DB_Models.Customer()
{
Email = "basejohn@test.pl",
Password = "testPass",
ID = 12
};
var mock = new Mock<DbContext>();
var userDbSet = new ApplicationDatabase.DB_Models.FakeDbSet<ApplicationDatabase.DB_Models.Customer>();
userDbSet.Add(user);
this._IdataServiceMock.Setup(x => x.VerifyCustomerAndReturnHisID(It.IsAny<string>(), It.IsAny<string>())).Returns(user.ID);
var a = this._IdataServiceMock.Object.VerifyCustomerAndReturnHisID(user.Email, user.Password); // <-- this will return 12
var result = this.loginPannel.VerifyCredentialsAndGetUserData(user.Email, user.Password) as JsonResult; // <--- This never returns 12
Assert.IsNotNull(result.Data);
Assert.AreEqual(12, result);
}
我想得到我嘲笑的结果数据是 12,有人可以帮助我吗,我为此苦苦挣扎了很长时间......
解决方案
推荐阅读
- java - 未找到由接口定义的代理类
- c# - C#字典添加值数组
- javascript - 使用正则表达式和测试的字符串比较
- mongodb - 如何对单调键上的范围查询的集合进行分片?
- rust - Rust 中的运行时是什么?
- javascript - 使用 Vue Google Chart - Geochart。图表在数据更改时重新加载,但图例被删除
- regex - 匹配特定字符串后的所有空格
- visual-c++ - WebView2 - 选择文本并复制到剪贴板
- flutter - 是否可以将模型名称作为变量输入 Future 或在 Flutter 的 Future 中使用回调?
- html - 在 HTML 中可浮动的不止一个所有标签都是浮动的