草庐IT

ecomdev-phpunit

全部标签

php - PHPUnit 是否有一些内置的递归数组比较功能?

我需要做的一些测试需要将一个已知数组与我从将要运行的函数中获得的结果进行比较。用于递归比较数组:PHPUnit有内置函数吗?这里有人有一些他们构建的代码可以分享吗?这将是我必须自己构建的东西吗? 最佳答案 是的。assertEquals()andassertNotEquals()documentation.具体来说:assertEquals()assertEquals(mixed$expected,mixed$actual[,string$message=''])Reportsanerroridentifiedby$messagei

php - 如何使用 PHPUnit 测试多个异常?

当使用PHPUnit测试异常时,要求每个语句或断言都必须抛出异常才能通过测试的最佳方法是什么?我基本上想做这样的事情:publicfunctiontestExceptions(){$this->setExpectedException('Exception');foo(-1);//throwsexceptionfoo(1);//doesnotthrowexception}//Testwillfailbecausefoo(1)didnotthrowanexception我想出了以下方法,它完成了工作,但在IMO中非常丑陋。publicfunctiontestExceptions(){tr

php - 使用 xampp 安装 PEAR 和 PHPUnit

我正在尝试启动并运行PHPUnit,以下是我目前正在执行的步骤:###InstallnewPEARVersionneededforPHPUnit3.X###Download:http://pear.php.net/go-pear.pharSaveitunderC:\xampp\phpOpenacommandpromptandgotoC:\xampp\phpType"phpgo-pear.phar"(InstallsnewPEAR)Type"pearupdate-channels"(updateschanneldefinitions)Type"pearupgrade--alldeps"(

php - 不可测试的基类扩展 PHPUnit_Framework_TestCase

总结我如何创建一个扩展PHPUnit_Framework_TestCase的基类并将其用于子类化实际测试用例,而不用PHPUnit测试基类本身?进一步说明我有一系列相关的测试用例,为此我创建了一个基类,其中包含一些将被所有测试用例继承的通用测试:BaseClass_TestCase.php:classBaseClass_TestCaseextendsPHPUnit_Framework_TestCase {functiontest_common(){//Testthatshouldberunforallderivedtestcases}}MyTestCase1Test.php:inclu

php - 运行 phpunit 时未找到 fatal error 'File/Iterator/Autoload.php'

我尝试在phpunit中运行测试类时遇到此错误。C:\xampp\htdocs\unittest>phpunitUnitTestusertest.phpPHPWarning:require_once(File/Iterator/Autoload.php):failedtoopenstreamNosuchfileordirectoryinC:\xampp\php\pear\PHPUnit\Autoload.phponline45PHPStacktrace:PHP1.{main}()C:\xampp\php\phpunit:0PHP2.require()C:\xampp\php\phpun

php - 关于如何在 PHPUnit 中使用 setUp() 和 tearDown() 的真实示例?

方法setUp()和tearDown()在每次测试之前和之后被调用。但实际上,是否有关于我为什么需要这个的真实示例?检查其他人的测试,我总是看到类似的东西:publicfunctionsetUp(){$this->testsub=newTestSubject();}publicfunctiontearDown(){unset($this->testsub);}publicfunctiontestSomething(){$this->assertSame('foo',$this->testsub->getFoo());}当然,这种方式和“旧的”局部变量方式几乎没有区别。

php - phpunit可以使用多个数据提供者吗

简而言之:phpunit在运行测试时可以使用多个数据提供者吗?例如,我有一个名为getById的方法,我需要为它运行成功和不成功的测试用例。成功的测试用例意味着它可以返回相应的记录。而对于不成功的,输入可以分为两类:无效和失败。invalid表示输入不合法,failed表示输入可能有效,但没有对应的ID对应的记录。所以代码是这样的:/***@dataProviderprovideInvalidId*@dataProviderprovideFailedId*/publicfunctiontestGetByIdUnsuccess($id){$this->assertNull($this->

php - 是否有可能使用 PHPUnit 模拟对象来调用神奇的 __call() 方法?

我在测试中有一个模拟对象。真正的对象PageRepository使用__call()实现了一个神奇的方法,因此如果您调用$pageRepository->findOneByXXXX($value_of_field_XXXX),它将在数据库中搜索与该参数匹配的记录。有没有办法模拟那个方法?真正的方法调用看起来像这样:$homepage=$pageRepository->findOneBySlug('homepage');测试看起来像这样:$mockPageRepository->expects($this->any())->method('findOneBySlug')->will($t

PHPUnit 断言没有调用任何方法

我有一个使用ServiceB的ClassA。在某种情况下,ClassA最终应该不会调用ServiceB的任何方法。我现在想测试一下,确实没有调用任何方法。这可以按如下方式完成:$classA->expects($this->never())->method('first_method');$classA->expects($this->never())->method('second_method');...有没有办法简单地声明“不应该在这个对象上调用任何方法”,而不是必须为每个方法指定一个限制? 最佳答案 是的,很简单,试试这个:

php - Laravel 4 测试; 'phpunit' 不被识别?

http://four.laravel.com/docs/testing说“安装新的Laravel应用程序后,只需在命令行上运行phpunit即可运行测试。”phpunit无法识别,我也试过phpartisiantest和phpartisanphpunitphpunit是否在某个奇怪的文件夹中,或者它实际上不包含在Laravel中?我不想安装它,如果是的话有两个。 最佳答案 用Composer安装启动和运行PHPUnit的一种简单方法(不需要安装Pear和弄乱你想使用它的每个系统)是将它包含在你的composer.json文件中,比