Moq的使用心得

  1. 1.Moq中Mock Repository时最好是Mock Repository的接口,这样会避免不知名的错误。

    var mockClubRepository = new Mock<IClubRepository>();
    
    mockClubRepository.Setup(mr => mr.GetById(It.IsAny<Guid>()))

    2.Moq 中怎样返回空(How to return null in Moq):

    mockRepository.Setup(mr => mr.GetItems()).Returns(() => null);

    这种写法很常用,比如返回一个空的List

    mockRepository.Setup(mr => mr.GetItems()).Returns(() => new List<Object>);

    3.怎样Mock一个IsValid == false 的ModelState。

    很简单:UsersController.ModelState.AddModelError("username","Bad username"); 添加个ModelError就可以改变ModelState的IsValid属性了。

    4.How to Mock User.Identity.Name

    Testing controller Action that uses User.Identity.Name

    ControllerCreateControllerForUser(string userName)
    {
        var mock = newMock<ControllerContext>();
        mock.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(userName);
        mock.SetupGet(p => p.HttpContext.Request.IsAuthenticated).Returns(true);
     
        var controller = newSomeController();
        controller.ControllerContext = mock.Object;
     
        return controller;
    }

    5. 有时候需要单元测试文件上传,那么怎么去Mock一个上传的文件呢?

    原理很简单,只需要MockHttpContext.Request.Files的一些需要的属性即可,例如:

    在ASP.NET MVC中,上传的文件都是放在HttpPostedFileBase这个对象中,我们可以直接Mock这个对象,对保存文件的方法进行单元测试

    [TestMethod]

    public void TestUpLoadFile()

    {

    var mockFile = new Mock<HttpPostedFileBase>();

    mockFile.Setup(d => d.FileName).Returns("test.txt");

    mockFile.Setup(d => d.ContentLength).Returns(100);

    mockFile.Setup(d => d.InputStream).Returns(new MemoryStream());

    const string uploadsFolder = "D:\\UploadedFiles";

    Domain.DMS.File file = _fileService.UploadedFile(mockFile.Object, uploadsFolder);

    Assert.AreEqual("test.txt", file.FileName);

    Assert.AreEqual(100, file.FileSize);

    Assert.AreEqual("txt", file.FileExtension);

    }

      

 
 
 
标签: ToolMoq

Moq的使用心得的更多相关文章

  1. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  2. NoSql数据库使用半年后在设计上面的一些心得

    NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...

  3. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  5. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  6. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  7. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  8. 我的MYSQL学习心得(七) 查询

    我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  9. 我的MYSQL学习心得(八) 插入 更新 删除

    我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...

随机推荐

  1. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

  2. httppost body的实现, 和body是gb2312等编码的实现

    使用的是http4.X 版本,里面推荐使用的post是key value的形式 List<NameValuePair> formparams = new ArrayList<Name ...

  3. 详解JMeter函数和变量

    JMeter函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用.函数调用的语法如下: ${__functionName(var1,var2,var3)} 其中,__function ...

  4. Appium:通过wifi连接Android设备

    1.首先用USB连接你的Android设备,然后在终端运行命令,它可以启动设备的5555端口使其在网络上可以连接. adb tcpip 2.现在断开USB连接,然后确保设备和你的电脑连接同一个无线网络 ...

  5. CSharp设计模式读书笔记(11):外观模式(学习难度:★☆☆☆☆,使用频率:★★★★★)

    定义: 外观模式:为子系统中的一组接口提供一个统一的入口.外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 模式角色与结构: 示例代码: using System; using Sys ...

  6. Cocos2d-x3.0 文件处理

    1.从文件中读取 auto sharedFileUtils = FileUtils::getInstance(); std::string ret; sharedFileUtils->purge ...

  7. 【百度地图API】当地址解析失败时,如何调用search方法查找地址

    原文:[百度地图API]当地址解析失败时,如何调用search方法查找地址 有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”. --------------------- ...

  8. linux复制文件命令scp

    linux大多数复制我们的递送工具使用,有着ftp,scp等一下. 当中scp命令很easy快捷, 本机到远程:scp (-r) 本地目录或者文件路径 远程ip:目录 远程到本机:scp (-r) 远 ...

  9. NPOI mvc easyui 根据Excel模板 生成Excel

    1.首先下载 NPOI  https://npoi.codeplex.com/releases  只要dll 就好 示例代码库太难懂了. NPOI 是一个开源  免费的 东西.而且不依赖 office ...

  10. outlook自动备份

    在 这里 下载 http://support.microsoft.com/kb/238782