草庐IT

c# - 检查属性是否已设置 - 使用 Moq

我不熟悉起订量和一般测试,所以这是我的菜鸟问题。如何测试Request的Status属性是否已使用Moq设置?publicclassDudeManager{privatereadonlyIDRepository_repo;publicDManager(IDRepositoryrepo){_repo=repo;}publicvoidCreate(Requestr){r.Status=Status.Submitted;_repo.AddRequest(r);}}是否有比以下方法更好的方法?也许使用VerifySet?[TestMethod]publicvoidAddingNewReques

c# - xUnit 和 Moq 不支持 async - await 关键字

我正在尝试探索如何将async和await关键字应用于我的xUnit测试。我正在使用xUnit1.9和AsyncCTP1.3。这是我的测试用例我有一个指定一个异步方法调用的接口(interface)publicinterfaceIDoStuffAsync{TaskAnAsyncMethod(stringvalue);}我有一个使用接口(interface)并调用异步方法的类publicclassUseAnAsyncThing{privatereadonlyIDoStuffAsync_doStuffAsync;publicUseAnAsyncThing(IDoStuffAsyncdoSt

c# - 在 C# 中使用 Moq 设置索引器

我不知道如何设置indexers在C#中与最小起订量。Moq文档很薄弱,我已经做了很多搜索......我想做的是类似于HowtoMoqSettinganIndexedproperty的解决方案。:varsomeClass=newMock();someClass.SetupSet(o=>o.SomeIndexedProperty[3]=25);我想修改上面的内容以适用于任何索引和任何值,所以我可以做这样的事情:someClass.Object.SomeIndexedProperty[1]=5;目前我有以下内容,这对索引属性getter非常有用,但如果我设置了值,Moq会忽略它:varso

c# - Moq设置方法返回值

我有下面的类,我正在尝试测试AddRecordToQueue方法。我正在使用Moq模拟AddRecordToQueue方法中AddToQueue方法的结果。AddToQueue方法返回一个bool值,所以我试图用真值模拟结果publicclassTest{privatereadonlyIRabbitMqConnectionrabbitMqConnection;publicTest(IRabbitMqConnectionrabbitMqConnection){this.rabbitMqConnection=rabbitMqConnection;}publicboolAddRecordTo

c# - 如何 Moq Entity Framework SqlQuery 调用

我已经能够使用这个link从带有最小起订量的EntityFramework模拟DbSet.但是,我现在想知道如何模拟对SqlQuery的调用。不确定这是否可能或如何,因为它依赖于知道正在调用什么“查询”的模拟数据库上下文。下面是我要模拟的内容。varmyObjects=DbContext.Database.SqlQuery("exec[dbo].[my_sproc]{0}","some_value").ToList();我目前还没有尝试任何东西,因为我不知道如何开始模拟这个例子。DbSet的模拟在下面并重新迭代,我可以正确地模拟返回MyObject的DbSet但是现在我正在尝试模拟一个

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