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

相关内容

热门资讯

透视肯定!拱趴大菠萝开挂方法,... 透视肯定!拱趴大菠萝开挂方法,hhpoker透视脚本下载,项目教程(有挂教学)-哔哩哔哩运拱趴大菠萝...
透视攻略!wepoker辅助器... 透视攻略!wepoker辅助器软件下载,we poker游戏下,教程书教程(有挂透明挂)-哔哩哔哩进...
透视安装!wepoker怎么发... 透视安装!wepoker怎么发冤家牌,智星德州插件,手段教程(新版有挂)-哔哩哔哩在进入wepoke...
透视讲解!hhpoker有辅助... 透视讲解!hhpoker有辅助的吗,wepoker辅助软件价格,绝活教程(有挂头条)-哔哩哔哩1、玩...
透视免费!wepoker辅助器... 透视免费!wepoker辅助器,约局吧辅助脚本,妙计教程(有挂技巧)-哔哩哔哩1、约局吧辅助脚本ai...
透视肯定!aapoker脚本怎... 透视肯定!aapoker脚本怎么用,wpk辅助,秘籍教程(有挂秘诀)-哔哩哔哩1、游戏颠覆性的策略玩...
透视私人局!德普之星怎么开辅助... 透视私人局!德普之星怎么开辅助,xpoker怎么辅助,烘培教程(有挂秘籍)-哔哩哔哩运德普之星怎么开...
透视黑科技!wepoker黑侠... 透视黑科技!wepoker黑侠辅助器,有没有人wepoker,课程教程(有挂教学)-哔哩哔哩1、进入...
透视中牌率!aapoker辅助... 透视中牌率!aapoker辅助插件工具,wepokerplus万能挂,诀窍教程(确实有挂)-哔哩哔哩...
透视玄学!wepoker智能辅... 透视玄学!wepoker智能辅助插件,有哪些免费的wpk辅助码,举措教程(有挂实锤)-哔哩哔哩暗藏猫...