jjzjj

php - 如何 mock 模拟内部方法

目标.phpgetData();returntrue;}publicfunctiongetData(){returnarray();}}目标测试.phpshouldReceive('getData')->once();$expected=$this->exp->validate();$this->assertTrue($expected);}}结果Mockery\Exception\InvalidCountException:应调用Mockery_1_ExpWarning的方法getData()恰好1次但被调用0次。我使用Mockery作为模拟工具,例子总是关于如何用DI模拟,我想知道

php - mock 重载类缺少方法

在使用Mockery时需要一些帮助-我想重载一个类,该类是在一个方法中使用newHelperUtil()创建的。使用Mockeryoverload我可以做到这一点,但它给我留下了一个空的shell类。然后我似乎必须创建所有被调用的方法。有没有办法创建一个重载的完整模拟,然后只更改一个方法?$mock=\Mockery::mock('overload:'.HelperUtil::class);$mock->shouldReceive('content')->andReturnUsing(function(){return'differentcontent';});谢谢编辑:我想我想做的是

php - Laravel 5 模拟 PasswordBroker

从样板PasswordController::postEmail()我试图模拟(使用Mockery)这部分://$this->passwordisaninstanceofPasswordBroker$response=$this->passwords->sendResetLink($request->only('email'),function($m){$m->subject($this->getEmailSubject());});在我的测试用例中,我正在调用->shouldReceive('sendResetLink')->with($postData,???)因为这是一个闭包,我

php - 使用 Mockery 模拟在另一个静态方法中调用的静态方法

我想使用Mokcerymock一个已经在另一个方法中使用过的静态方法,如下:ClassSomeClass{publicstaticfunctionmethodA(){.....;self::B();}publicstaticfunctionmethodB(){DoSomeThing}}如果我想模拟方法B,并使用方法A,模拟功能不起作用,只是因为方法B在方法A中使用,如下所示useMockeryasm;$mocktest=m::mock->('SomeClass[B]');$mocktest->shouldReceive('B')->andReturn("expectedResult")

php - 在 Laravel 中使用 Mockery/phpUnit 时出错

我是一名新手开发人员,试图为现有的Laravel应用程序启动测试套件,但我没有测试经验。现在我只是想建立一些测试以获得一些信心和经验来编写更实质性的测试。我正在尝试测试模型上的关系(我意识到这不是一个非常明智的测试)并尝试创建一个模拟模型对象来这样做(我也明白最好在sqlite数据库的内存中执行此操作但主要这里的目标是测试Controller,但我不知道如何处理那里的身份验证问题)。我有以下简单、愚蠢的测试:publicfunctiontestFoo(){$lead=m::mock('Lead');$this->mock->shouldReceive('program')->once(

使用 Mockery 进行 PHP 单元测试和模拟

这可能是我对模拟的误解。我真的很感激关于为什么模拟一个不存在或存在的类是一件好事的解释?示例场景:假设我们有一个类依赖于第二个类的输出,我们更改了输出格式或其他格式。这不会让我们的测试保持成功,尽管它们在第一类中已经过时了吗? 最佳答案 答案是肯定的!如果您尊重代码中的某些可测试性原则,则可以将一个方法与同一类中的其他方法隔离开来。这就是单元测试的目标。看这个例子:months()/12);}publicfunctionmonths(){//Databasecalloranythingelse,it'sablackbox!}}cla

php - mock & PHPUnit : method does not exist on this mock object

你能告诉我问题出在哪里吗?我有一个包含以下测试的GeneratorTest.php文件:shouldReceive('put')->with('foo.txt','foobar')->once();$generator=newGenerator($fileMock);$generator->fire();}publicfunctiontestGeneratorDoesNotOverwriteFile(){$fileMock=\Mockery::mock('\stats\jway\File');$fileMock->shouldReceive('exists')->once()->and

php - 使用链式方法和参数模拟调用

我正在学习如何使用模拟来运行一些单元测试,但我不确定如何模拟我的数据库类。它由单独的方法组成,可以像这两个示例一样链接起来:$db->select('someTblName',['fieldName'])->where('fieldName','someValue')->runQuery()->fetch();//returnsarrayornull另一种用法可能是这样的:$db->select('someTblName')->where('fieldName','someValue')->where('fieldName',array('>=','someValue')->runQu

php - mock 对象参数验证问题

考虑示例类(很抱歉它太复杂了,但它尽可能简洁):classRecordLookup{private$records=[13=>'foo',42=>'bar',];function__construct($id){$this->record=$this->records[$id];}publicfunctiongetRecord(){return$this->record;}}classRecordPage{publicfunctionrun(RecordLookup$id){return"Recordis".$id->getRecord();}}classApp{function__c

php - 如何在 PHP 单元测试中模拟在构造函数中调用的方法?

我在对具有在构造函数中调用的方法的类进行单元测试时遇到问题。我不明白如何mock这个。也许我应该使用phpUnit的“setUp”方法?我正在使用Mockery库。还有比这更好的工具吗?classToTest{function__construct(){$this->methodToMock();//needtomockthatforfuturetests}//mymethodsclass}如有任何建议,我们将不胜感激。 最佳答案 如果您的类难以实例化以进行测试,则说明您的类在构造函数中做了太多工作或正在做一些工作。http://m