在ASP.NET MVC中,可以使用Moq库来模拟数据库以进行单元测试。以下是一些示例代码:
首先,创建一个存储库接口,该接口将定义所有您需要模拟的数据库操作:
public interface IProductRepository
{
IEnumerable
然后实现该接口的类:
public class ProductRepository : IProductRepository
{
private List
public void AddProduct(Product product)
{
products.Add(product);
}
public void DeleteProduct(int productId)
{
var product = products.FirstOrDefault(x => x.ProductId == productId);
if (product != null)
products.Remove(product);
}
public IEnumerable GetAllProducts()
{
return products;
}
public Product GetProductById(int productId)
{
return products.FirstOrDefault(x => x.ProductId == productId);
}
public void UpdateProduct(Product product)
{
var old_product = products.FirstOrDefault(x => x.ProductId == product.ProductId);
if (old_product != null)
{
products.Remove(old_product);
products.Add(product);
}
}
}
这是一个简单的Product模型:
public class Product { public int ProductId { get; set; } public string ProductName { get; set; } }
现在,我们可以使用Moq来模拟这个存储库以进行单元测试:
[TestClass]
public class ProductControllerTests
{
[TestMethod]
public void Index_ReturnsAViewResult_WithAListOfProducts()
{
// Arrange
var mockRepo = new Mock