首页 > 解决方案 > 控制器方法不返回最小起订量数据

问题描述

我正在尝试为控制器编写单元测试方法,但是我用测试数据模拟的方法没有返回它。

我的控制器:

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,有人可以帮助我吗,我为此苦苦挣扎了很长时间......

标签: c#entity-frameworkunit-testingmodel-view-controllermoq

解决方案


推荐阅读