-
1.Moq 中 Mock Repository 時(shí)最好是 Mock Repository 的接口,這樣會(huì)避免不知名的錯(cuò)誤。
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 );
這種寫法很常用,比如返回一個(gè)空的List
mockRepository.Setup(mr => mr.GetItems()).Returns(() =>
new
?List<Object>);
?3. 怎樣 Mock 一個(gè) IsValid == false? 的 ModelState 。
很簡(jiǎn)單: UsersController.ModelState.AddModelError("username","Bad username");? 添加個(gè) 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.? 有時(shí)候需要單元測(cè)試 文件上傳 ,那么怎么去 Mock 一個(gè)上傳的文件呢?
原理很簡(jiǎn)單,只需要 Mock HttpContext.Request.Files的一些需要的屬性即可,例如:
View Code
在 ASP.NET MVC 中,上傳的文件都是放在HttpPostedFileBase這個(gè)對(duì)象中,我們可以直接 Mock 這個(gè)對(duì)象,對(duì)保存文件的方法進(jìn)行單元測(cè)試
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);
}
?
? ? ?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
