• NUnit+mock+moq单元测试


    [TestFixture]
        public class InstantBatchBuyTest
        {
            private string _mallAbc;
            private string _itemCode;
            private int _quantity;
            private string _items;
            Mock<ICatalogService> mockCatalog;
            Mock<IShoppingCartService> mockShoppingCartService;
    
            [SetUp]
            public void Init()
            {
                _mallAbc = string.Empty;
                _itemCode = "18-001-0001";
                _quantity = 2;
    
                _items = "[{"qty":2,"sku":"18-001-0001"},{"qty":4,"sku":"18-001-0002"},{"qty":2,"sku":"18-001-0003"}]";
    
                var items = new List<ItemInfo>() { new ItemInfo { ItemCode = "18-001-0001" }, new ItemInfo { ItemCode = "18-001-0002" }, new ItemInfo { ItemCode = "18-001-0003" } };
                mockCatalog = new Mock<ICatalogService>();
                mockCatalog.Setup(s => s.GetItemByCodeList(It.IsAny<List<string>>())).Returns(items); // 这些都是服务端的接口,此处我们可以设置返回值
    
                mockShoppingCartService = new Mock<IShoppingCartService>();
                mockShoppingCartService.Setup(s => s.CheckItemInventory("18-001-0001", 2)).Returns(true);
                mockShoppingCartService.Setup(s => s.CheckItemInventory("18-001-0002", 4)).Returns(true);
                mockShoppingCartService.Setup(s => s.CheckItemInventory("18-001-0003", 2)).Returns(true);
                mockShoppingCartService.Setup(s => s.InstantBuyForbiddenBuyProduct(items)).Returns(false);
            }
    
    
            [Test]
            public void 立即购买_单个商品()
            {
                var result = new InstantBuyAjaxResult();
                // Arrange
                var instanItemList = new List<InstantItemModel>() { new InstantItemModel { ItemCode = _itemCode, Quantity = _quantity } };
                if (instanItemList.Any())
                {
                    // Act
                    result =
                        (new InstantBuyLogic(mockShoppingCartService.Object, mockCatalog.Object)).InstantBuy(
                            instanItemList);
                }
    
                // Assert
                Assert.AreEqual(result.Status, 1);
            }
    
            [Test]
            public void 立即购买_多个商品()
            {
                var result = new InstantBuyAjaxResult();
                // Arrange
                var instanItemList = JsonHelper.JsonToObject<List<InstantItemModel>>(_items);
                if (instanItemList != null && instanItemList.Any())
                {
                    // Act
                    result =
                        (new InstantBuyLogic(mockShoppingCartService.Object, mockCatalog.Object)).InstantBuy(
                            instanItemList);
                }
    
                // Assert
                Assert.AreEqual(result.Status, 1);
            }
        }
    

    需要添加Moq.dll、nunit.framework.dll引用,开发过程中结合Resharper,使用起来更加方便

  • 相关阅读:
    MySql使用游标Cursor循环(While)更新数据
    初试TinyIoCContainer笔记
    用Razor做静态页面生成器
    在CentOS6.5上安装MariaDB
    mono的远程调试
    mono3.2.3+Jexus5.5+openSuSE13.1的asp.net
    mono3.2和monodevelop4.0在ubuntu12.04上两天的苦战
    第一节知识点:.net与c#的概念
    支付宝支付功能(使用支付宝sdk)
    vs2017/vs2019 去掉 单击aspx文件预览页面
  • 原文地址:https://www.cnblogs.com/cr7/p/3229420.html
Copyright © 2020-2023  润新知