mercredi 3 février 2016

MVC unit testing for Viewbag dropdown items returned from controller to view

I have a controller which gets Roles from DB & assigns to a dropdown

 var items = (entities.tbllogins.GroupBy(a => a.Role).Select(a => a.FirstOrDefault())).ToList();//get count 
        ViewBag.drpitems = new SelectList(items, "Role", "Role");
        return View();

In a View I have,

 @Html.DropDownListFor(a => a.Role, (SelectList)ViewBag.drpitems, "Choose")

Now i wanted to write test case in my project for this scenario, I have tried

        // Arrange
        HomeController controller = new HomeController();

        // Act
        var result = controller.Login() as ViewResult;

        var expectedCategories = new SelectList(new[] { "Admin", "User"});
        // Execute
        var actualCategories = (SelectList)result.ViewBag.drpitems;

        Assert.IsNotNull(result);
        Assert.AreEqual(expectedCategories.Count(), actualCategories.Count());
        for (var i = 0; i < expectedCategories.Count(); i++)
        {
            Assert.AreEqual(expectedCategories.ElementAt(i).Value, actualCategories.ElementAt(i).Value);
            Assert.AreEqual(expectedCategories.ElementAt(i).Text, actualCategories.ElementAt(i).Text);
        }

I have referred test case writing in c# for the same,along with this also i have read many articles & blogs. But no success so far. Test says failed. Could anyone please help me where i missed in writing test case

Thanks

Aucun commentaire:

Enregistrer un commentaire