草庐IT

c# - 使用 Moq.It.IsAny 测试以某物开头的字符串

是否可以使用Moq来表示一个方法接受以“ABC”开头的字符串。举个例子:logger.Verify(x=>x.WriteData(Moq.It.IsAny().StartsWith("ABC")),Times.Exactly(3));那不会编译,但希望它能说明我的观点 最佳答案 尝试:logger.Verify(x=>x.WriteData(Moq.It.Is(str=>str.StartsWith("ABC"))),Times.Exactly(3));你可以看到It.Is的另一个例子://matchingFunc,lazyeval

c# - 你如何使用 Moq 来模拟一个简单的界面?

好的,我有一个这样的业务逻辑类:注意:就上下文而言,供应商简介是描述PDF文档“下载”的简单实体。//////Housesbusinesslevelfunctionsfordealingwithvendorbriefs.///publicclassVendorBriefController:IVendorBriefController{//////VendorbriefcontrollerrequiresaninstanceofIVendorBriefRepository.///IVendorBriefRepository_vendorBriefRepository;//////Ini

c# - 使用 Moq,我如何设置一个带有输入参数的方法调用作为具有预期属性值的对象?

varstorageManager=newMock();storageManager.Setup(e=>e.Add(It.IsAny()));Add()方法需要一个具有FirstName属性的UserMetaData对象。我想确保已经传递了名字为“FirstName1”的UserMetaData类型的对象。 最佳答案 您可以使用Verify.示例:验证Add从未用UserMetaData调用过与FirstName!="FirstName1":storageManager.Verify(e=>e.Add(It.Is(d=>d.Firs

c# - 使用 Moq 验证委托(delegate)

我得到了一个通过参数获取委托(delegate)的类。此类调用该委托(delegate),我想用最小起订量对其进行单元测试。我如何验证此方法已被调用?示例类:publicdelegatevoidFoo(intnumber);publicclassA{inta=5;publicA(FoomyFoo){myFoo(a);}}我想检查是否调用了Foo。谢谢。 最佳答案 截至thiscommitMoq现在支持模拟委托(delegate),对于您的情况,您可以这样做:varfooMock=newMock();vara=newA(fooMock

c# - 使用 Moq 和 Unity 模拟存储库对象以进行单元测试的正确方法

在我的工作中,我们使用Moq进行模拟,使用Unity进行IOC容器。我对此还很陌生,工作中没有太多资源可以帮助我确定我应该使用的最佳实践。现在,我有一组存储库接口(interface)(例如:IRepository1、IRepository2...IRepository4),特定进程需要使用它们来完成其工作。在实际代码中,我可以通过使用IOC容器和RegisterType()方法来确定所有IRepository对象。我正在尝试找出能够测试需要上述4个存储库的方法的最佳方法。我在想我可以注册一个新的UnityIOC容器实例,并为每个传入Mock.Object值的模拟对象在容器上调用Reg

c# - 使用 Moq 实现 IQueryable 的模拟类

我花了一个晚上试图模拟一个实现了IQueryable的对象:publicinterfaceIRepo:IQueryable{}我能想到的最好的是这样的:varitems=newItem[]{}.AsQueryable();varrepo=newMock();repo.Setup(r=>r.GetEnumerator()).Returns(items.GetEnumerator());repo.Setup(r=>r.Provider).Returns(items.Provider);repo.Setup(r=>r.ElementType).Returns(items.ElementTyp

c# - Moq伪造一种方法但使用另一种方法的真实实现

给定一个接口(interface)IService,它有Method1()和Method2()。我想测试当Method1()抛出一个Exception时,Method2()被调用并返回一个给定的值.(Method2()在Method1()抛出时调用)。因此我需要用一个假的Method1()来测试一个真正的Method2(),它们是同一个接口(interface)的方法。这是我的测试代码:MBasesut.MethodX()是唯一的入口点。它使用IService。我的目标是断言Method2()返回东西。//Arrange//Fakebytesin.varnetworkStreamMoc

c# - Moq ReturnsAsync() 带参数

我正在尝试像那样模拟存储库的方法publicasyncTaskGetByTypeValue(WhitelistTypetype,stringvalue)使用MoqReturnsAsync,如下所示:staticListwhitelist=newList();varwhitelistRepositoryMock=newMock();whitelistRepositoryMock.Setup(w=>w.GetByTypeValue(It.IsAny(),It.IsAny())).ReturnsAsync((WhitelistTypetype,stringvalue)=>{return(fr

c# - Moq:单元测试依赖于 HttpContext 的方法

考虑.NET程序集中的一个方法:publicstaticstringGetSecurityContextUserName(){//extracttheusernamefromrequeststringsUser=HttpContext.Current.User.Identity.Name;//everythingafterthedomainsUser=sUser.Substring(sUser.IndexOf("\\")+1).ToLower();returnsUser;}我想使用Moq框架从单元测试中调用此方法。该程序集是webforms解决方案的一部分。单元测试看起来像这样,但我缺

c# - 如何使用 Moq 为不同的参数设置方法两次

我想用Moq设置一个方法两次,但似乎最后一个覆盖了之前的方法。这是我的初始设置:stringusername="foo";stringpassword="bar";varprincipal=newGenericPrincipal(newGenericIdentity(username),new[]{"Admin"});varmembershipServiceMock=newMock();membershipServiceMock.Setup(ms=>ms.ValidateUser(username,password)).Returns(newValidUserContext{Princ