[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,使用起来更加方便

NUnit+mock+moq单元测试的更多相关文章

  1. Nunit NMock Ncover单元测试

    Nunit中如何进行事务性单元测试   单元测试要求:单元测试方法并不真正去变更数据库,也就是说单元测试不依赖于数据库中的数据.那我们如何解决执行单元测试方法后,不变更数据库中数据呢? 一般的解决方案 ...

  2. unit vs2017基于nunit framework创建单元测试

    unit  vs2017基于nunit framework创建单元测试 一.简叙: 单元测试大型项目中是必备的,所以不可忽视,一个项目的成败就看是否有单元测试,对后期的扩展维护都带来了便利. 二.安装 ...

  3. VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试

    1.VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试 https://download.csdn.net/download/qq_39441918/10522539 2.*注意 ...

  4. google mock C++单元测试框架

    转:google mock C++单元测试框架 2012-03-12 09:33:59 http://blog.chinaunix.net/uid-25748718-id-3129590.html G ...

  5. 单元测试NUnit,mock组件NSubstitute,信号量SemaphoreSlim,异步lock等例子

    public class LockTest { private IDatabase _database; private readonly Random _random = new Random(); ...

  6. Spring学习12-Spring利用mock进行单元测试

    一.概述    对于Java组件开发者来说,他们都盼望拥有一组能够对组件开发提供全面测试功能的好用的单元测试.一直以来,与测试独立的Java对象相比,测试传统型J2EE Web组件是一项更为困难的任务 ...

  7. 使用Visual Studio Code Coverage和nunit上传单元测试覆盖率和单元测试结果到SonarQube上

    SonarQube.Scanner.MSBuild.exe begin /k:"OMDCCQuotes" /d:sonar.host.url="http://myip:9 ...

  8. c#单元测试:使用Moq框架Mock对象

    在.net中有几种mock框架可供选择,比如NMock,PhinoMocks,FakeItEasy和Moq.尽管Moq相对较新,但是它非常易用.不需要像传统的Record/Replay.并且使用Moq ...

  9. 使用 Moq 测试.NET Core 应用 -- Mock 方法

    第一篇文章, 关于Mock的概念介绍: https://www.cnblogs.com/cgzl/p/9294431.html 本文介绍使用Moq来Mock方法. 使用的代码: https://git ...

随机推荐

  1. [LeetCode] Word Break II 解题思路

    Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each ...

  2. kindle paperwhite 使用说明

    calibre,eink必备转换软件. easypub,lucida制作的软件,支持txt to epub:txt to mobi,可以实现目录. 售后电话:400 817 0100 正常的设计格式转 ...

  3. redis取值报错

    > get "all_couriers_on_the_job" (error) ERR Operation against a key holding the wrong k ...

  4. C#获取时间属于第几周

    int getWeek(DateTime dt)    {        DateTime time = Convert.ToDateTime(dt.ToString("yyyy" ...

  5. motan源码分析四:客户端调用服务

    在第一章中,我们分析了服务的发布与注册,本章中将简单的分析一下客户端调用服务的代码及流程,本文将以spring加载的方式进行分析. 1.在DemoRpcClient类的main()方法中加载类: Ap ...

  6. cocos2d 高仿doodle jump 无源代码

    1. 游戏视频 主角眼熟吗?没错,上次跑酷游戏中的"30"来Jump了,有三种道具.主角光环,竹蜻蜓.翅膀: 有两种怪物,螃蟹和鸟: 有5种板子.点击屏幕,30会把它的嘴巴3给发射 ...

  7. 从sockaddr中取得Ip地址和端口号

    在socket编程中,服务器端accept()等待一个客户端的连接,当连接成功后,accept拷贝客户端的地址信息到sin_addr里面,我们如何从sin_addr取得此客户端的Ip地址和端口号呢? ...

  8. javascript內容向上不間斷滾動

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Eclipse中Java文件图标由实心J变成空心J的问题

    在eclipse中空心J的java文件,表示不被包含在项目中进行编译,而是当做资源存在项目中.例如 当是单个文件为空心J的时候 1.右击该文件 -- >BuildPath -->Inclu ...

  10. git查看某个文件的修改历史

    <转自 http://www.cnblogs.com/flyme/archive/2011/11/28/2265899.html> 有时候在比对代码时,看到某些改动,但不清楚这个改动的作者 ...