jjzjj

FakeItEasy

全部标签

c# - 如何在 FakeItEasy 中模拟 protected 虚拟成员?

Moq允许模拟protected虚拟成员(seehere)。是否可以在FakeItEasy中做同样的事情? 最佳答案 可以做到,但不能开箱即用。诀窍是实现IFakeObjectCallRule并通过Fake.GetFakeManager(foo).AddRule(myRule)将其添加到您的假货中。不过我正在考虑实现这个功能,它会是这样的:A.CallTo(foo).WhereMethod(x=>x.Name=="MyProtectedMethod").Returns("whatever");虽然语法还不是很完善。编辑上述功能现已实

c# - 使用 FakeItEasy 伪造泛型方法而不指定类型

我想知道是否有人可以为所有可能的类型(或指定的子类型)伪造一个通用方法调用?例如,假设我们有这个美妙的IBar界面。publicinterfaceIBar{intFoo();}我可以伪造对这个IBar的Foo调用的依赖,而不必指定T是任何特定类型吗?[TestFixture]publicclassBarTests{[Test]publicvoidBarFooDoesStuff(){varexpected=9999999;varfakeBar=A.Fake();A.CallTo(()=>fakeBar.Foo()).Returns(expected);varresponse=fakeBa

c# - 为什么 FakeItEasy 抛出这个异常,为什么使方法成为虚拟方法来修复它?

我有一个测试(代码在下面)来测试Method1调用Method2。我得到的异常是Thecurrentproxygeneratorcannotinterceptthespecifiedmethodforthefollowingreason:-Sealedmethodscannotbeintercepted.被测方法本身并未密封。但是,它确实依赖密封类(第三方类,我无法为其创建包装器以正确模拟它-另一个问题的另一个主题)。无论哪种方式,此时我都没有要求FakeItEasy模拟密封类。在调试我的测试时,当调用依赖项时,我可以清楚地看到正在生成一个真实的对象,而不是假的。然而,鉴于错误消息,我

c# - 在不使用魔术字符串的情况下将参数传递给 FakeItEasy-mock?

我一直在使用Moq因为我过去几年的mock需要,但在看了FakeItEasy之后我想试一试。我经常想测试是否使用正确的参数调用了一个方法,但我发现使用FakeItEasy没有令人满意的方法。我有以下代码要测试:publicclassWizardStateEngine:IWizardStateEngine{privatereadonlyIWorkflowInvoker_workflowInvoker;privateList_history;publicWizardStateEngine(IWorkflowInvokerworkflowInvoker){_workflowInvoker=w

c# - FakeItEasy 中的 Dummy 有什么用?

FakeItEasy中的Dummy有什么用?它与A.Fake或A.Ignored有何不同?谢谢:-) 最佳答案 FakeItEasy本身并没有真正使用虚拟实例,它只是一种创建可在测试中使用的虚拟实例的方法。例如,假设您要测试以下类:publicclassFoo{publicvoidBar(DateTimesomeDate);}现在,在您的一个测试中,您想要调用bar方法,但是传递给它的值对测试并不重要,而不是这样写:foo.Bar(newDateTime(2000,1,1));你可以这样写:foo.Bar(A.Dummy());这表

c# - 使用 FakeItEasy,如何获取假属性上设置的值?

使用FakeItEasy,我试图捕获一个假对象的属性值设置:首先是界面:interfaceISomeInterface{intMyProperty{get;set;}}然后是一段单元测试:varmyObject=A.Fake();intsaved=0;A.CallTo(()=>myObject.MyProperty).Invokes(x=>saved=?????);SomeMethod(myObject);Assert.That(saved,Is.EqualTo(100));并且拥有voidSomeMethod(ISomeInterfaceintf){intf.MyProperty=1

c# - 如何使用 xUnit、SubSpec 和 FakeItEasy 测试抛出的异常

我正在使用xUnit、SubSpec和FakeItEasy进行单元测试。到目前为止,我已经创建了一些积极的单元测试,如下所示:"GivenaOptionspresenter".Context(()=>presenter=newOptionsPresenter(view,A.Ignored,service));"withtheInitializemethodcalledtoretrievetheoptionvalues".Do(()=>presenter.Initialize());"expecttheviewnottobenull".Observation(()=>Assert.Not

c# - 如何使用 FakeItEasy 验证 FindOneAndUpdateAsync 方法针对伪造的 MongoCollection 运行?

我正在使用FakeItEasy库进行单元测试,并尝试为mongo更新语句编写单元测试,并验证是否使用调用了FindOneAndUpdateAsync方法MustHaveHappened().我已经创建了一个单元测试,它将伪造dbcontext类,使用它来生成一个集合,然后调用将针对伪集合运行更新语句的方法。当我在Debug模式下运行测试时,它命中了FindOneAndUpdateAsync方法,但是MustHaveHappened()结果显示该方法没有针对伪造的集合运行。有没有一种方法可以使用FakeItEasy来检测FindOneAndUpdateAsync方法在其运行所针对的集合也

c# - 如何使用 FakeItEasy 访问 Returns() 中的参数值?

我有一个用于创建一些数据对象的工厂接口(interface)。interfaceIFactory{IDataCreate(stringname,stringdata);}interfaceIData{//....}classData:IData{publicData(stringname,stringdata){//.....}}我需要创建一个模拟工厂来传递给另一个模块,这个模块将使用这个模拟来创建数据。举个简单的例子,一个简单的模块如下所示:classQuickModule{privatereadonlyIFactory_factory;publicQuickModule(IFact

c# - FakeItEasy 的 Out 和 Ref 参数

我有一个方法,它有一个返回多个记录的out参数。我想知道如何使用FakeItEasy模拟它。 最佳答案 您应该使用.AssignsOutAndRefParameters配置方法:[Test]publicvoidOutput_and_reference_parameters_can_be_configured(){varfake=A.Fake>();stringignored=null;A.CallTo(()=>fake.TryGetValue("test",outignored)).Returns(true).AssignsOutA
12