您好,我是Moq框架的新手,对如何使用它有一些疑问。我举个例子,希望得到解答。我有两个类,一个接口(interface)和一个实现:publicclassVehicle{publicstringRegistrationNumber{get;set;}publiclongVehicleIdentifier{get;set;}publicTyreTyreSpecification{get;set;}}publicclassTyre{publiclongNumberOfTyres{get;set;}publiclongTyreSize{get;set;}}publicinterfaceISe
我找不到在Moq中使用When方法的示例When(Funccondition);该方法的目的/用途是什么?请提供一个代码示例,展示一个有用的场景。 最佳答案 “何时”让您可以选择对同一个模拟对象进行不同的设置,具体取决于您必须决定的内容。假设您想测试您编写的格式提供程序。如果程序(=测试)在早上运行,某个函数调用应该返回null;下午一定值。然后你可以使用“When”来编写那些条件设置。varmockedService=newMock();mockedService.When(()=>DateTime.Now.Hourx.GetFo
我正在使用NHibernate、ASP.NETMVC2.0和StructureMap开始一个新项目,并使用NUnit和Moq进行测试。对于我的每个Controller,我都有一个公共(public)构造函数,其中注入(inject)了一个ISession。应用程序本身运行良好,但就单元测试而言,我基本上必须模拟一个ISession才能测试Controller。当我尝试使用MOQ模拟ISession时,我收到以下错误消息:Onlypropertyaccessesaresupportedinintermediateinvocations看来我的问题是期待来自框架CreateQuery方法的
我正在努力将大量同步asp.net代码转换为.net4.5和新的异步语法。我有很多测试代码,如下所示:varretVal=newFoo(bar,baz);_myMock.Setup(x=>x.DoSomething(123)).Returns(retVal);当我从FooDoSomething()转换DoSomething的签名时至asyncTaskDoSomething(),我所有的测试代码都必须重写。我当前的解决方法是将原始代码转换为类似以下内容:varretVal=newFoo(bar,baz);_myMock.Setup(x=>x.DoSomething(123)).Retur
从这篇文章(HowtomoqaFunc)中提取问题并根据答案不正确进行修改。publicclassFooBar{privateFunc__fooBarProxyFactory;publicFooBar(FuncfooBarProxyFactory){_fooBarProxyFactory=fooBarProxyFactory;}publicvoidProcess(){_fooBarProxyFactory();_fooBarProxyFactory();}}我需要模拟一个作为构造函数参数传递的Func,断言func被调用了两次。当试图模拟函数时varfuncMock=newMock>(
我目前正在尝试对通过EntityFramework运行的查询运行一些单元测试。查询本身在实时版本上运行没有任何问题,但单元测试总是失败。我已将此范围缩小到我对DbFunctions.TruncateTime的使用,但我不知道有什么方法可以让单元测试反射(reflect)实时服务器上发生的情况。这是我正在使用的方法:publicSystem.Data.DataTableGetLinkedUsers(intparentUserId){vartoday=DateTime.Now.Date;varquery=fromupinDB.par_UserPlacementwhereup.MentorI
使用Moq,我希望能够验证传递给模拟方法调用的参数是否满足某些条件。在这种情况下,我想检查传递给模拟方法的列表是否具有特定大小:varmockSomeRepository=newMock();mockSomeRepository.Setup(m=>m.Write(It.IsAny>())).Verifiable();varmainClass=newMainClass(mockSomeRepository.Object);ListsomeList=GetListWith25Items();mainClass.DoRepositoryWrite(someList);//callsSomeR
我需要以这样的方式模拟HttpResponseBase.ApplyAppPathModifier,调用时参数ApplyAppPathModifier会由模拟自动返回。我有以下代码:varhttpResponseBase=newMock();httpResponseBase.Setup(hrb=>hrb.ApplyAppPathModifier(/*capturethisparam*/)).Returns(/*returnithere*/);有什么想法吗?编辑:在Moq文档的第一页找到解决方案(http://code.google.com/p/moq/wiki/QuickStart):v
以下使用EF4.2的测试现在引发EF4.3的下一个异常System.ArgumentException:Typetomockmustbeaninterfaceoranabstractornon-sealedclass.---->System.TypeLoadException:Method'CallValidateEntity'ontype'Castle.Proxies.DbContext43Proxy'fromassembly'DynamicProxyGenAssembly2,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null'is
目前我有:[Test]publicvoidDrawDrawsAllScreensInTheReverseOrderOfTheStack(){//Arrange.varscreenMockOne=newMock();varscreenMockTwo=newMock();varscreens=newList();screens.Add(screenMockOne.Object);screens.Add(screenMockTwo.Object);varstackOfScreensMock=newMock();stackOfScreensMock.Setup(s=>s.ToArray()).