Here is the scenario:
I'm writing a test for my controller and need to setup a view model titled CheckoutViewModel
. My controller method, Products
does not take CheckoutViewModel
as a parameter, so I cannot pass it in that way.
Currently, the test fails returning a Null Exception
because CheckoutViewModel
is not getting set and called.
Question: How can I setup my
CheckoutViewModel
with data.
Error Details:
-
System.NullReferenceException
-
Object reference not set to an instance of an object
Current Test
[TestMethod]
public void Products_ProductControllerIsCalled_ReturnsViewWithProducts()
{
// Arrange
var currentSession = _autoMoqer.GetMock<ICurrentSession>().Object;
ProductController productController = new ProductController(currentSession);
var checkoutViewModel = new CheckoutViewModel
{
CheckoutId = new Guid()
};
// Act
ActionResult result = productController.Products();
// Assert
Assert.IsInstanceOfType(result, typeof(ViewResult));
}
Controller
[AccectReadVerbs]
public ActionResult Products()
{
CheckoutViewModel checkoutViewModel = GetCheckoutViewModel();
var checkoutId = checkoutViewModel.CheckoutId;
var result = _productOrchestrator.Products(checkoutId, currentSession)
return View(result);
}
Failing on this method
private CheckoutViewModel GetCheckoutViewModel()
{
if(Session["CheckoutViewModel"] == null)
{
return new CheckoutViewModel();
}
return (CheckoutViewModel)Session["CheckoutViewModel"];
}
Aucun commentaire:
Enregistrer un commentaire