我正在使用PHPUnit3.6.10(不幸的是我目前无法升级到更新的版本)。在处理一些遗留代码的模拟时,我遇到了一个奇怪的错误。试过谷歌,只有与静态方法相关的结果出现,这不是我的情况。有这门课:classServicesMapperextendsDbMapper{//...(somemethods)publicfunctionsaveTravel(ServiceTravel$oTravel){$this->getAdapter()->insert('services_travels',$oTravel->getToArray());}//...(somemethods)}我试着模拟它:
假设我有以下界面:interfaceMyInterface{publicfunctionyieldData();}我想创建一个这个接口(interface)的模拟,例如像这样:$mocked_instance=Phake::partialMock(MyInterface::class);模拟yield方法的最佳方式是什么?这是我想出的最好的:Phake::when($mocked_instance)->yieldData()->thenReturn([]);在PHPUnit/Phake中有没有一种方法可以更接近函数的原始功能(即返回生成器)? 最佳答案
PHPUnit::如何设置和获取cookie的功能,测试时不会出现错误:header已发送?示例出现错误:PHPUnit_Framework_Error_Warning:无法修改header信息-header已发送MyCookie.phpclassMyCookie{publicstaticfunctioncreateCookie(){$uid=null;$cookieName='test_cookie';if(!isset($_COOKIE[$cookieName])){$uid=unique_hash();setcookie($cookieName,$uid,0,'','',fals
我使用的是PHPUnit版本3.6.2,并且总是可以PHPReflectionException:Methodsuitedoesnotexistin/pathTo/pear/PHPUnit/Runner/BaseTestRunner.phponline113运行单个测试时:phpunitpath/to/my/ClassToTest.phpPHPUnit使用pear安装,我使用的是php5.3.6是否有任何我应该修复的php配置?或者这只是PHPUnit应该修复的问题。类assertTrue(true);}} 最佳答案 启用xdebu
我有这样的构造:classFoo{publicfunctiondoFoo($value=''){if(function_exists('foo')){returnfoo($value);}//ifphpversiondoesnotsupportfoo()//...}}如果函数foo的存在取决于安装的PHP版本,我如何使用PHPUnit测试此代码以实现100%的代码覆盖率(对于此示例,我假设该函数存在,否则100%的代码覆盖率是不可能的)。有没有办法在运行时禁用/启用PHP函数?有什么解决办法吗?编辑:我找到了一个解决方案:高级PHP调试器/PECL扩展为此目的提供了一个函数*renam
我注意到,当我的笔记本电脑连接到互联网时,我的PHPUnit测试需要大约90秒到200秒才能完成。但是当我断开它与互联网的连接时,它会在不到20秒的时间内运行!!这让我既开心又难过!在这两种情况下,所有测试都通过了,我确信我正在模拟对外部API的每个请求。我使用Laravel和MySQL进行实际数据存储,并使用内存中的sqlite进行测试环境。我的开发环境也全部在Docker上运行。这是否与PHPUnit或我的代码相关!!任何人都知道发生了什么。谢谢更多信息我使用的域是something.dev,我的API使用api.something.dev。每个测试至少对每个API端点进行一次调用
我想为函数库文件运行单元测试...也就是说,我没有类,它只是一个带有辅助函数的文件...例如,我在~/www/test创建了一个php项目和一个文件~/www/test/lib/format.php工具->创建PHPUnit测试给我以下错误:PHPUnit3.4.5bySebastianBergmann.Couldnotfindclass"format"in"/home/sas/www/test/lib/format.php".现在,如果我(手动!)编码文件~/www/test/tests/lib/FormatTest.phpassertEquals('Sebastian',toPro
我有一个PHPUnit测试套件,目前由于未找到类定义而导致fatalerror。这最终是测试代码本身的失败,也是开发人员在提交代码之前未能证明测试本身的失败。然而,这样的事情确实时有发生,如果发生fatalerror(无论谁最终负责),测试简单地标记为失败,测试的其余部分,那就太好了套件仍然被执行。我已经阅读了有关--process-isolation开关的内容,据我所知,它应该处理这个问题。由于每个测试都在一个单独的进程中运行,如果子进程由于fatalerror而死亡,父进程仍然可以继续运行。事实上,这在类似问题的回答中明确说明:https://stackoverflow.com/a
我有一个带有{{app.user}}的Twig模板。问题是,在phpunit测试(一个扩展WebTestCase的类)中,它被定义为NULL。使用token(http://symfony.com/doc/current/cookbook/testing/simulating_authentication.html)模拟身份验证或模拟HTTP身份验证(http://symfony.com/doc/current/cookbook/testing/http_authentication.html)没有帮助。那么如何从phpunit测试中设置一个twig全局变量呢?为什么模拟身份验证在这种情
我正在尝试创建一个模拟对象并在测试时在我的Zend框架应用程序中使用它:publicfunctiontestAskQuestionRouteWithLoggedIn(){//getthemockauthobject,andupdatetheregistry$auth=$this->getMockBuilder('QA_Auth')->disableOriginalConstructor()->getMock();//mockmethods,andreturnvalues$auth->method('isAuthenticated')->will($this->returnValue(t