草庐IT

c# - Moq 根据调用次数设置函数返回

我需要模拟一个调用MSMQ的接口(interface),有没有一种方法可以使用Moq模拟真实的MSMQ场景,队列中有10条消息,我调用模拟函数10次,我可以获得一个预定义的对象,第11次我应该得到不同的返回值(例如null)? 最佳答案 Moq现在在Moq命名空间中有一个名为SetupSequence()的扩展方法,这意味着您可以为每个特定的对象定义不同的返回值打电话。一般的想法是,您只需链接所需的返回值。在下面的示例中,第一次调用将返回Joe,第二次调用将返回Jane:customerService.SetupSequence(s

c# - 我可以让 Moq 为模拟类添加属性吗?

我正在为我的项目编写一个命令行界面。用户输入“createprojectfoo”,它会找到负责“project”的Controller,然后调用Create方法,将“foo”作为第一个参数传递。它在很大程度上依赖于属性和反射:Controller看起来像这样:[ControllerFor("project")]classProjectController{[ControllerAction("create")]publicobjectCreate(stringprojectName){/*...*/}}我想在解析器的单元测试中使用Moq,如下所示:Mockcontroller=newM

c# - 当构造函数有参数时使用 Moq 实现模拟对象

我读过这个answer由Ragzitsu提出同样的问题。不过,我仍然对如何实现感到困惑。谁能给我一个实现示例。我有以下类(class):classFizz:IFizz{}classBuzz:IBuzz{}classBar:IBar{}classFoo:IFoo{publicFoo(IBarbar,IFizzfizz,IBuzzbuzz){//initializeetc.}//publicmethods}在这里绕过构造函数的实用方法是什么?我想做类似的事情varfoo=newMock();换句话说,代码将如何处理建议最好的做法是右键单击您的类并选择“提取接口(interface)”。

c# - 在 C# 中使用 Moq 进行模拟

我有以下代码:publicinterfaceIProductDataAccess{boolCreateProduct(ProductnewProduct);}类ProductDataAccess实现该接口(interface)。publicclassProductBusiness{publicboolCreateProduct(ProductnewProduct){IProductDataAccesspda=newProductDataAccess();boolresult=pda.CreateProduct(newProduct);returnresult;}}在这种情况下,如何为C

c# - 如何使 Moq 忽略 ref 或 out 的参数

在RhinoMocks中,您可以将模拟作为一揽子声明告知IgnoreArguments。在Moq中,您似乎必须为每个参数指定It.IsAny()。但是,这不适用于ref和out参数。如何在需要最小化内部服务调用以返回特定结果的地方测试以下方法:publicvoidMyMethod(){//DoStuffIListerrors=newList();varresult=_service.DoSomething(referrors,refparam1,param2);//Domorestuff}测试方法:publicvoidTestOfMyMethod(){//SetupvarmoqServ

c# - 如何在调用同一类中的另一个方法的单元测试中使用 Moq

您好,我是Moq框架的新手,对如何使用它有一些疑问。我举个例子,希望得到解答。我有两个类,一个接口(interface)和一个实现:publicclassVehicle{publicstringRegistrationNumber{get;set;}publiclongVehicleIdentifier{get;set;}publicTyreTyreSpecification{get;set;}}publicclassTyre{publiclongNumberOfTyres{get;set;}publiclongTyreSize{get;set;}}publicinterfaceISe

c# - Moq When(Func<bool>) 方法的使用

我找不到在Moq中使用When方法的示例When(Funccondition);该方法的目的/用途是什么?请提供一个代码示例,展示一个有用的场景。 最佳答案 “何时”让您可以选择对同一个模拟对象进行不同的设置,具体取决于您必须决定的内容。假设您想测试您编写的格式提供程序。如果程序(=测试)在早上运行,某个函数调用应该返回null;下午一定值。然后你可以使用“When”来编写那些条件设置。varmockedService=newMock();mockedService.When(()=>DateTime.Now.Hourx.GetFo

c# - 使用 Moq 模拟 NHibernate ISession

我正在使用NHibernate、ASP.NETMVC2.0和StructureMap开始一个新项目,并使用NUnit和Moq进行测试。对于我的每个Controller,我都有一个公共(public)构造函数,其中注入(inject)了一个ISession。应用程序本身运行良好,但就单元测试而言,我基本上必须模拟一个ISession才能测试Controller。当我尝试使用MOQ模拟ISession时,我收到以下错误消息:Onlypropertyaccessesaresupportedinintermediateinvocations看来我的问题是期待来自框架CreateQuery方法的

c# - 将同步 Moq 模拟转换为异步

我正在努力将大量同步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

c# - 使用 Moq 模拟 Func<> 构造函数参数并验证它被调用了两次

从这篇文章(HowtomoqaFunc)中提取问题并根据答案不正确进行修改。publicclassFooBar{privateFunc__fooBarProxyFactory;publicFooBar(FuncfooBarProxyFactory){_fooBarProxyFactory=fooBarProxyFactory;}publicvoidProcess(){_fooBarProxyFactory();_fooBarProxyFactory();}}我需要模拟一个作为构造函数参数传递的Func,断言func被调用了两次。当试图模拟函数时varfuncMock=newMock>(