草庐IT

c# - 在单元测试中模拟 IMemoryCache

我正在使用aspnetcore1.0和xunit。我正在尝试为一些使用IMemoryCache的代码编写单元测试。但是,每当我尝试在IMemoryCache中设置一个值时,我都会收到Null引用错误。我的单元测试代码是这样的:IMemoryCache被注入(inject)到我要测试的类中。但是,当我尝试在测试中的缓存中设置一个值时,我得到了一个空引用。publicTestGetSystemUnderTest(){varmockCache=newMock();returnnewTest(mockCache.Object);}[Fact]publicvoidTestCache(){vars

c# - 每次使用 Moq 调用方法时,如何使 Mock 返回一个新列表

我正在使用MOQ模拟具有预期返回列表的方法调用。我的方法返回一个列表,但我希望模拟在每次调用该方法时创建一个新列表。到目前为止我做了什么:Listexpected=newList{newCorrelation(){Code="SelfError1"},newCorrelation(){Code="SelfError2"}};MockselfMock=newMock();selfMock.Setup(f=>f.Validate()).Returns(expected);我想要实现的是让模拟在每次调用方法get时返回一个新列表。我试过这个但没用:selfMock.Setup(f=>f.Va

c# - 最小起订量如何正确模拟仅设置属性

使用Moq处理接口(interface)的正确方法是什么?以前我已经添加了另一个访问器,但是这已经渗透到我的域中太多了,随机thrownewNotImplementedException()语句贯穿始终。我只想做一些简单的事情,比如:mock.VerifySet(view=>view.SetOnlyValue,Times.Never());但这会产生编译错误Theproperty'SetOnlyValue'hasnogetter 最佳答案 publicclassXyz{publicvirtualstringAA{set{}}}pub

c# - 每个主要模拟框架在现实世界中的优缺点是什么?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭1年前。Improvethisquestionseealso"WhatshouldIconsiderwhenchoosingamockingframeworkfor.Net"我正在尝试确定一个模拟框架以用于我最近着手的.NET项目。我想加快对不同框架的研究。我最近读了这篇博文http://codevanced.net/post/Mocking-frameworks-comparison.aspx并想知道StackOverflow的任何

c# - 我如何在我的单元测试中模拟 Controller 上下文,以便我对字符串函数的部分 View 起作用?

我正在尝试为我的Controller创建一个单元测试,但我正在测试的操作使用部分View来字符串函数,它不想在我的测试中工作。privatestringRenderPartialViewToString(stringviewName,objectmodel=null){if(string.IsNullOrEmpty(viewName))viewName=ControllerContext.RouteData.GetRequiredString("action");ViewData.Model=model;using(System.IO.StringWritersw=newSystem.

c# - Moq:Lambda 表达式作为参数并在返回中评估它们

在我的单元测试中,我希望能够在接受lambda表达式的工作单元中最小化存储库的“查找”功能。例如:publicvirtualIQueryableFind(Expression>predicate){//FindOPS}我在我的单元测试中创建了测试列表来表示我的dbSet(我还省略了很多抽象以使这个问题更简单):[TestMethod]publicvoidFindTest(){varmockUnitOfWork=newMock();vartestList=newList{//Testvalues}//HereiswhereIamstuck:mockUnitOfWork.Setup(uow

c# - Moq 具有 5 个以上参数和访问调用参数的函数

我有一个功能我要最小起订量。问题是它需要5个参数。该框架仅包含Action和最小起订量的通用CallBack()仅重载Action和四个通用版本。有没有优雅的解决方法?这就是我想要做的:publicclassFilter:IFilter{publicintFilter(inti1,inti2,inti3,inti4,inti5){return0;}}//Moqcode:varmocker=newMock();mocker.Setup(x=>x.Filter(It.IsAny(),It.IsAny(),It.IsAny(),It.IsAny(),It.IsAny(),It.IsAny()

c# - 如何安装 Moq 框架

我计划使用Moq在我创建的单元测试代码中模拟一些接口(interface)。我已经下载了最新版本的Moq。我的问题是如何安装它?我应该把Moq.dll放在哪里?我试过在Internet上搜索,但我能找到的都是如何使用Moq的示例,而不是如何安装它。 最佳答案 添加对Moq框架的引用的最佳方法是从Nuget安装它.你也可以downloadMoq.dll并添加对该库的引用(通常我在解决方案文件夹下创建文件夹libs,我将所有第三方库放在其中,这无法通过Nuget获得)。BTW从Nuget安装包的另一个选项-右键单击​​项目引用并选择Ma

c# - 最小起订量验证事件触发

classA{eventEventHandlerEvent1;}varmock=newMock();如何验证Event1是否已触发?(不使用手动事件处理程序/触发标志) 最佳答案 我不确定我是否真的理解你问的原因。如果你有Mock,那么你控制了模拟,那么为什么要验证它做了你控制的事情呢?也就是说,虽然我确实使用Moq的raise/raises,但我仍然经常使用带有lambda的标志,我发现它相当干净:booleventWasDispatched=false;//yeah,it'sthedefaultvara=newA();a.Eve

c# - 如何使用 moq 框架在 c# 中为私有(private)方法编写单元测试?

我想使用moq框架在C#中为私有(private)方法编写单元测试,我在StackOverFlow和Google中进行了搜索,但找不到预期的结果。如果可以,请帮助我。 最佳答案 你不能,至少不能使用最小起订量。但更重要的是,您不应该。首先,您测试的不是方法,而是行为。其次,为了测试行为,您可以使用类型的公共(public)API并验证该操作的结果。私有(private)方法是实现细节。您不想验证如何完成事情,您想要验证做的事情是否完成。 关于c#-如何使用moq框架在c#中为私有(pri