ASP.NETMVC:如何在数据驱动环境中模拟数据库?
创始人
2024-11-12 05:30:19
0

在ASP.NET MVC中,可以使用Moq库来模拟数据库以进行单元测试。以下是一些示例代码:

首先,创建一个存储库接口,该接口将定义所有您需要模拟的数据库操作:

public interface IProductRepository { IEnumerable GetAllProducts(); Product GetProductById(int productId); void AddProduct(Product product); void UpdateProduct(Product product); void DeleteProduct(int productId); }

然后实现该接口的类:

public class ProductRepository : IProductRepository { private List products = new List() { new Product() {ProductId = 1, ProductName = "iPhone X"}, new Product() {ProductId = 2, ProductName = "Samsung Galaxy S9"}, new Product() {ProductId = 3, ProductName = "Google Pixel 2"} };

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(); mockRepo.Setup(repo => repo.GetAllProducts()) .Returns(GetTestProducts()); var controller = new

相关内容

热门资讯

推荐几款新版!微扑克wpk辅助... 推荐几款新版!微扑克wpk辅助透视,微扑克有挂么(微扑克)竟然真的是有挂(有挂规律)-哔哩哔哩在进入...
六分钟了解!微扑克透明挂,微扑... 六分钟了解!微扑克透明挂,微扑克有挂么(微扑克)真是是真的有挂(有挂讲解)-哔哩哔哩1、起透看视 微...
发现玩家!微扑克外挂,微扑克有... 发现玩家!微扑克外挂,微扑克有挂么(微扑克)原来是有挂(有挂秘籍)-哔哩哔哩1、首先打开微扑克有挂么...
技术分享!微扑克有ai吗,微扑... 技术分享!微扑克有ai吗,微扑克ai机器人(微扑克)其实是真的有挂(有挂教程)-哔哩哔哩运微扑克ai...
玩家交流!微扑克有挂么,微扑克... 玩家交流!微扑克有挂么,微扑克有挂么(微扑克)真是真的有挂(有挂秘籍)-哔哩哔哩;一、微扑克有挂么软...
热门推荐!微扑克辅助软件,微扑... 热门推荐!微扑克辅助软件,微扑克透牌(微扑克)一贯真的是有挂(有挂存在)-哔哩哔哩;1、微扑克辅助软...
重大通报!微扑克有辅助透视,微... 重大通报!微扑克有辅助透视,微扑克透牌(微扑克)确实是真的有挂(有挂详情)-哔哩哔哩1、打开软件启动...
避坑细节!微扑克如何让系统发好... 避坑细节!微扑克如何让系统发好牌,微扑克ai机器人(微扑克)都是存在有挂(证实有挂)-哔哩哔哩1、进...
重大通报!微扑克智能ai辅助,... 重大通报!微扑克智能ai辅助,微扑克有挂么(微扑克)好像有挂(有挂猫腻)-哔哩哔哩;1、这是跨平台的...
传递经验!微扑克ai辅助神器,... 传递经验!微扑克ai辅助神器,微扑克ai机器人(微扑克)都是是有挂(真实有挂)-哔哩哔哩1、不需要A...