I'm trying to do some Unit Test. I have the following controller:
using SportsStore.domain.Abstract;
using SportsStore.domain.Entities;
namespace SportsStore.WebUI.Controllers
{
public class ProductController : Controller
{
private IProductRepository repository;
public int PageSize = 4;
//Declar the dependency on IProductRepository
public ProductController(IProductRepository productRepository)
{
this.repository = productRepository;
}
// GET: Product
public ViewResult List(int page = 1)
{
return View(repository.Products.OrderBy(p => p.ProductID).Skip((page-1) * PageSize).Take(PageSize));
}
}
}
I'm going to unit test the page pagination.
Here is my Unit test:
using SportsStore.domain.Abstract;
using SportsStore.domain.Entities;
using SportsStore.WebUI.Controllers;
using System.Collections.Generic;
using System.Web.Mvc;
namespace SportsStore.UnitTests
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
}
[TestMethod]
public void Can_Paginate()
{
//Arrange
Mock<IProductRepository> mock = new Mock<IProductRepository>();
mock.Setup(m => m.Products).Returns(new Product[]
{
new Product {ProductID = 1, Name = "P1" },
new Product {ProductID = 2, Name = "P2" },
new Product {ProductID = 3, Name = "P3" },
new Product {ProductID = 4, Name = "P4" },
new Product {ProductID = 5, Name = "P5" }
});
ProductController controller = new ProductController(mock.Object);
controller.PageSize = 3;
//Act
IEnumerable<Product> result = (IEnumerable<Product>)controller.List(2).Model;
//Assert
Product[] prodArray = result.ToArray();
Assert.IsTrue(prodArray.Length == 2);
Assert.AreEqual(prodArray[0].Name, "P4");
Assert.AreEqual(prodArray[1].Name, "P5");
}
}
}
I get the following error message in my test file:
What does this mean?
Your project dll use newer dll than the dll you referenced in your test project. just remove the dll from your test project and than add the correct one:
Select the test project in Solution explorer -> References -> right click on System.Web.Mvc -> remove (How to: Add or Remove References)
Than add the correct version of System.Web.Mvc which is 5.2.3.0
Edit
The ASP.NET MVC has a nuget package. This is correct way to add the assembly