我正在使用aspnetcore1.0和xunit。我正在尝试为一些使用IMemoryCache的代码编写单元测试。但是,每当我尝试在IMemoryCache中设置一个值时,我都会收到Null引用错误。我的单元测试代码是这样的:IMemoryCache被注入(inject)到我要测试的类中。但是,当我尝试在测试中的缓存中设置一个值时,我得到了一个空引用。publicTestGetSystemUnderTest(){varmockCache=newMock();returnnewTest(mockCache.Object);}[Fact]publicvoidTestCache(){vars
我正在使用MOQ模拟具有预期返回列表的方法调用。我的方法返回一个列表,但我希望模拟在每次调用该方法时创建一个新列表。到目前为止我做了什么:Listexpected=newList{newCorrelation(){Code="SelfError1"},newCorrelation(){Code="SelfError2"}};MockselfMock=newMock();selfMock.Setup(f=>f.Validate()).Returns(expected);我想要实现的是让模拟在每次调用方法get时返回一个新列表。我试过这个但没用:selfMock.Setup(f=>f.Va
使用Moq处理接口(interface)的正确方法是什么?以前我已经添加了另一个访问器,但是这已经渗透到我的域中太多了,随机thrownewNotImplementedException()语句贯穿始终。我只想做一些简单的事情,比如:mock.VerifySet(view=>view.SetOnlyValue,Times.Never());但这会产生编译错误Theproperty'SetOnlyValue'hasnogetter 最佳答案 publicclassXyz{publicvirtualstringAA{set{}}}pub
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭1年前。Improvethisquestionseealso"WhatshouldIconsiderwhenchoosingamockingframeworkfor.Net"我正在尝试确定一个模拟框架以用于我最近着手的.NET项目。我想加快对不同框架的研究。我最近读了这篇博文http://codevanced.net/post/Mocking-frameworks-comparison.aspx并想知道StackOverflow的任何
我正在尝试为我的Controller创建一个单元测试,但我正在测试的操作使用部分View来字符串函数,它不想在我的测试中工作。privatestringRenderPartialViewToString(stringviewName,objectmodel=null){if(string.IsNullOrEmpty(viewName))viewName=ControllerContext.RouteData.GetRequiredString("action");ViewData.Model=model;using(System.IO.StringWritersw=newSystem.
在我的单元测试中,我希望能够在接受lambda表达式的工作单元中最小化存储库的“查找”功能。例如:publicvirtualIQueryableFind(Expression>predicate){//FindOPS}我在我的单元测试中创建了测试列表来表示我的dbSet(我还省略了很多抽象以使这个问题更简单):[TestMethod]publicvoidFindTest(){varmockUnitOfWork=newMock();vartestList=newList{//Testvalues}//HereiswhereIamstuck:mockUnitOfWork.Setup(uow
我有一个功能我要最小起订量。问题是它需要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()
我计划使用Moq在我创建的单元测试代码中模拟一些接口(interface)。我已经下载了最新版本的Moq。我的问题是如何安装它?我应该把Moq.dll放在哪里?我试过在Internet上搜索,但我能找到的都是如何使用Moq的示例,而不是如何安装它。 最佳答案 添加对Moq框架的引用的最佳方法是从Nuget安装它.你也可以downloadMoq.dll并添加对该库的引用(通常我在解决方案文件夹下创建文件夹libs,我将所有第三方库放在其中,这无法通过Nuget获得)。BTW从Nuget安装包的另一个选项-右键单击项目引用并选择Ma
classA{eventEventHandlerEvent1;}varmock=newMock();如何验证Event1是否已触发?(不使用手动事件处理程序/触发标志) 最佳答案 我不确定我是否真的理解你问的原因。如果你有Mock,那么你控制了模拟,那么为什么要验证它做了你控制的事情呢?也就是说,虽然我确实使用Moq的raise/raises,但我仍然经常使用带有lambda的标志,我发现它相当干净:booleventWasDispatched=false;//yeah,it'sthedefaultvara=newA();a.Eve
我想使用moq框架在C#中为私有(private)方法编写单元测试,我在StackOverFlow和Google中进行了搜索,但找不到预期的结果。如果可以,请帮助我。 最佳答案 你不能,至少不能使用最小起订量。但更重要的是,您不应该。首先,您测试的不是方法,而是行为。其次,为了测试行为,您可以使用类型的公共(public)API并验证该操作的结果。私有(private)方法是实现细节。您不想验证如何完成事情,您想要验证做的事情是否完成。 关于c#-如何使用moq框架在c#中为私有(pri