草庐IT

Mock_Game

全部标签

php - mock 首先抛出然后在第二次调用时返回值

$client=Mockery::mock();$client->shouldReceive('send')->andThrow($error)->andReturn(true);不幸的是,它只返回true而没有先抛出异常。如何在第一次调用时抛出异常,然后在第二次调用该方法时返回值?编辑:如果我手动编辑Mockery\Expectation.php并设置$_throw=真。$client->shouldReceive('send')->twice()->andReturn($error,true); 最佳答案 $client->sh

PHPUnit - 创建 Mock 对象作为属性的 stub

我正在尝试在PHPunit中配置Mock对象以返回不同属性的值(使用__get函数访问)例子:classOriginalObject{publicfunction__get($name){switch($name)case"ParameterA":return"ValueA";case"ParameterB":return"ValueB";}}我正在尝试使用以下方式来模拟它:$mockObject=$this->getMock("OrigionalObject");$mockObject->expects($this->once())->method('__get')->with($t

php - mock - call_user_func_array() 期望参数 1 是一个有效的回调

我有一个类需要模拟:classMessagePublisher{/***@param\PhpAmqpLib\Message\AMQPMessage$msg*@paramstring$exchange-ifnotprovidedthenonepassedinconstructorisused*@paramstring$routing_key*@parambool$mandatory*@parambool$immediate*@paramnull$ticket*/publicfunctionpublish(AMQPMessage$msg,$exchange="",$routing_key=

php - 在 PHPUnit 上使用方法中的类型提示创建接口(interface)的 Mock 对象失败

我创建了以下界面:然后我尝试使用PHPUnit3.4创建此接口(interface)的Mock对象,但出现以下错误:fatalerror:Mock_Action_b389c0b1::execute()的声明必须与D:\Xampp\xampp\php\PEAR\PHPUnit\Framework\TestCase.php(1121)中的Action::execute()兼容:eval()'代码在第2行我查看了从PHPUnit获得的堆栈跟踪,发现它创建了一个实现接口(interface)Action的Mock对象,但按以下方式创建了execute方法:如您所见,PHPUnit接管了数组类型

使用 $mock->expects($this->at(...)) 时 PHPUnit "Mocked method does not exist."

我遇到了一个关于PHPUnit模拟对象的奇怪问题。我有一个应该被调用两次的方法,所以我使用了“at”匹配器。这在第一次调用该方法时有效,但由于某种原因,第二次调用它时,我得到“模拟方法不存在”。我以前使用过“at”匹配器,但从未遇到过这种情况。我的代码看起来像这样:classMyTestextendsPHPUnit_Framework_TestCase{...publicfunctiontestThis(){$mock=$this->getMock('MyClass',array('exists','another_method','...'));$mock->expects($thi

c++ - 如何使模拟对象在 Google Mock 中引发异常?

使用GoogleMock1.7.0,我有一个带有方法的模拟对象,我希望它被调用,在这种情况下,模拟的方法应该引发异常。ObjectMockobject_mock_;EXPECT_CALL(object_mock_,method()).Times(1).WillRepeatedly(???);是否存在引发异常的GoogleMock操作?我在文档中没有找到它,但我怀疑到目前为止没有人需要它。谢谢! 最佳答案 只需编写一个引发异常的简单操作:ACTION(MyThrowException){throwMyException();}并像使用

c++ - Google Mock 单元测试静态方法 c++

我刚开始进行单元测试(使用BOOST框架进行测试,但对于模拟我必须使用GoogleMock)并且我遇到了这种情况:classA{staticintMethod1(inta,intb){returna+b;}};classB{staticintMethod2(inta,intb){returnA::Method1(a,b);}};所以,我需要创建模拟类A,并让我的B类不使用A类中的真实Method1,而是使用模拟。我不知道该怎么做,也找不到类似的例子。 最佳答案 您可以将B类更改为模板:templateclassB{public:st

c++ - 如何使用 Google Mock 模拟模板化方法?

我正在尝试模拟一个模板化方法。这是包含要模拟的方法的类:classmyClass{public:virtual~myClass(){}templatevoidmyMethod(Tparam);}如何使用GoogleMock模拟方法myMethod? 最佳答案 在以前的GoogleMock版本中,您只能模拟虚函数,请参阅documentation在项目的页面中。允许模拟的最新版本non-virtualmethods,使用他们所谓的高性能依赖注入(inject)。正如用户@congusbongus在此答案下方的评论中所说:GoogleM

c++ - 如何在 C 中使用 google mock?

我正在维护一个用C编写的遗留项目,使用C++编译器运行它是不可行的。由于代码是交叉编译的,因此可以在主机环境中运行单元测试或类似的测试。因此,也可以与C++主机编译器接口(interface)并使用google-test和google-mock。google-mock的某些功能似乎很容易被用于测试,以调用真实的实现和设置调用期望。我希望能够在C代码中使用它们。我可以看到确实可以不使用vtables使用google-mock,但它需要模板。有没有办法用googlemock模拟裸C函数?编辑:我基本上不得不使用googlemock,但我认为阅读此线程的其他人都比我有更好的灵active。

javascript - 使用 Jasmine/Node : Uncaught type error "Cannot set property of ' mock' undefined 测试 Angular

我正在尝试创建“Angular.jsinAction”中描述的Jasmine单元测试。该应用程序运行正常,但在尝试运行我的测试时,我在node.js命令提示符中不断收到此错误。我的配置:module.exports=function(config){config.set({//basepath,thatwillbeusedtoresolvefilesandexcludebasePath:'',//frameworkstouseframeworks:['jasmine'],//listoffiles/patternstoloadinthebrowserfiles:['javascript