Moq的使用心得

系统 2358 0

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 一个上传的文件呢?

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

    View Code

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

    View Code

    [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);

    }

     

         

 
 
 
标签:  Tool Moq

Moq的使用心得


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论