写单元测试用例返回动作结果的方法

时间:2014-10-30 10:45:35

标签: asp.net-mvc unit-testing visual-studio-2012 assert vs-unit-testing-framework

我确实为以下方法生成了测试用例;返回Action结果 - 一个json“Success”字符串。如何修改生成的脚本?

   public ActionResult LoginClick(string username, string password)
    {
        LoginRepo loginrepo = new LoginRepo();
        BL bl = new BL();

        bool loginStatus = loginrepo.CheckLogin(username, password);
        if (loginStatus)
        {
            bl.SetSessionVariable("Username", username);
            return Json(new { Status = "Success" }, JsonRequestBehavior.AllowGet);
        }
        return Json(new { Status = "Failed" }, JsonRequestBehavior.AllowGet);
    }

以下是生成的测试用例。

 [TestMethod()]
        [HostType("ASP.NET")]
        [UrlToTest("http://localhost:1280")]
        public void LoginClickTest()
        {
            LoginController target = new LoginController(); // TODO: Initialize to an appropriate value
            string username = null; // TODO: Initialize to an appropriate value
            string password = null; // TODO: Initialize to an appropriate value
            ActionResult expected = null ; // TODO: Initialize to an appropriate value
            ActionResult actual;
            actual = target.LoginClick(username, password);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");

        }

我该如何修改它以便它能够成功运行?由于它的动作结果和数据是json字符串应该是什么,实际结果?我该怎么写assert?

1 个答案:

答案 0 :(得分:0)

How should i modify it so that it can run successfully? 

您需要注入LoginRepo。有关示例here

的更多信息
  

由于它的动作结果和数据是json字符串应该是什么   预期的,实际的结果?我该如何写断言?

您需要执行类似的类型转换才能从ActionResult获取JsonResult:

    var viewResult = yourTargetController.LoginClickTest() as JsonResult;
    Assert.AreEqual(false, viewResult.Data);