我正在尝试配置PhpStorm2017.2以将PhpUnit5用于我的PHP5.6项目。我已经从theofficialsource下载了phpunit-5.7.21.phar文件。并将它放在我的PHP5.6安装目录中。在PhpStormSettings>>Languages&Frameworks>>PHP>>TestFrameworks中,我已链接到.phar可执行文件并设置默认配置文件到项目根目录中的phpunit.xmlphpunit.xml的内容如下:.tests我正在尝试在tests/unit目录中构建测试,在该目录中我的源文件项目结构将按描述进行镜像inthemanual.例
有没有办法用PHPUnit(或者其他PHP测试框架)测试邮件是否发送正确?我必须测试使用PHP函数mail()的代码。使用自定义邮件程序类,我总是可以进行模拟,但是对于mail()...?也许有一些插件能够使用IMAP并验证是否收到邮件?(如果可能的话,它应该与操作系统无关……) 最佳答案 这里的解决方案是将邮件包装在一个可以模拟的类中,然后改用它。我看不出测试mail()本身有什么意义,我确信它已经被彻底测试过了。 关于php-如何使用PHPUnit测试mail(),我们在StackO
我很好奇其他人是如何处理这个问题的。编写测试并没有那么糟糕,但是mock有点糟透了并且降低了我的流程。一个人是否可以拥有一个“fixtures”目录并使用特定的模拟声明来举例说mock_db.php?更进一步,将这些模拟抽象到一个函数中是否是一种不好的做法?即://functiontoincludeadbmockinclude_once'test/fixtures/dbmock.php';$mockMYSQL=$dbmock('mysql','db1');$mockMSSQL=$dbmock('mssql','db2');只是想知道其他有经验的测试人员如何处理这个问题。我正在编写脚本来
我正在使用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