是否可以创建一个禁用构造函数并手动设置protected属性的模拟对象?这是一个愚蠢的例子:classA{protected$p;publicfunction__construct(){$this->p=1;}publicfunctionblah(){if($this->p==2)throwException();}}classATestextendbla_TestCase{/**@expectedExceptionException*/publicfunctiontestBlahShouldThrowExceptionBy2PValue(){$mockA=$this->getMock
根据我的阅读,似乎我应该能够设置一个文件夹,例如tests/,将一些带有单元测试类的文件放入其中,然后在该文件上运行phpunit并让它找到并运行测试。无论出于何种原因,在我的安装中(在OSX上),它认为文件夹tests/是一个文件,或者看起来是这样:$lsteststest1.phptest2.php$phpunittests/test1.phpPHPUnit3.5.3bySebastianBergmann.FTime:0seconds,Memory:5.00MbTherewas1failure:1)FailingTest::testFailYourtestsuccessfullyf
根据我的阅读,似乎我应该能够设置一个文件夹,例如tests/,将一些带有单元测试类的文件放入其中,然后在该文件上运行phpunit并让它找到并运行测试。无论出于何种原因,在我的安装中(在OSX上),它认为文件夹tests/是一个文件,或者看起来是这样:$lsteststest1.phptest2.php$phpunittests/test1.phpPHPUnit3.5.3bySebastianBergmann.FTime:0seconds,Memory:5.00MbTherewas1failure:1)FailingTest::testFailYourtestsuccessfullyf
我想知道如何使用Zend_Test和一般的PHP编写PHPUnit测试。 最佳答案 我正在使用Zend_Test来完全测试所有Controller。设置起来非常简单,因为您只需要设置引导文件(引导文件本身不应该调度前端Controller!)。我的基本测试用例类如下所示:abstractclassController_TestCaseextendsZend_Test_PHPUnit_ControllerTestCase{protectedfunctionsetUp(){$this->bootstrap=array($this,'ap
我想知道如何使用Zend_Test和一般的PHP编写PHPUnit测试。 最佳答案 我正在使用Zend_Test来完全测试所有Controller。设置起来非常简单,因为您只需要设置引导文件(引导文件本身不应该调度前端Controller!)。我的基本测试用例类如下所示:abstractclassController_TestCaseextendsZend_Test_PHPUnit_ControllerTestCase{protectedfunctionsetUp(){$this->bootstrap=array($this,'ap
我开始编写PHPUnit测试,我希望在开发人员的机器和我们的服务器上运行这些测试。开发人员机器的设置与服务器不同,甚至彼此不同。要在这些不同的地方运行,运行测试的人似乎必须指出运行的位置。然后测试可以查找运行它的机器的正确配置。我在想象这样的事情:phpunit.bat-Xjohns_laptopunittest.php或在alpha服务器上:phpunit-Xalphaunittest.php在测试中,如果是“X”(或其他)参数,我将能够获取该值,并且例如知道这台机器的应用程序根路径是什么。命令行似乎不允许这样做-还是我错过了什么? 最佳答案
我开始编写PHPUnit测试,我希望在开发人员的机器和我们的服务器上运行这些测试。开发人员机器的设置与服务器不同,甚至彼此不同。要在这些不同的地方运行,运行测试的人似乎必须指出运行的位置。然后测试可以查找运行它的机器的正确配置。我在想象这样的事情:phpunit.bat-Xjohns_laptopunittest.php或在alpha服务器上:phpunit-Xalphaunittest.php在测试中,如果是“X”(或其他)参数,我将能够获取该值,并且例如知道这台机器的应用程序根路径是什么。命令行似乎不允许这样做-还是我错过了什么? 最佳答案
我想用不同的预期参数调用我的模拟方法两次。这不起作用,因为expects($this->once())将在第二次调用时失败。$mock->expects($this->once())->method('foo')->with('someValue');$mock->expects($this->once())->method('foo')->with('anotherValue');$mock->foo('someValue');$mock->foo('anotherValue');我也试过:$mock->expects($this->exactly(2))->method('foo'
我想用不同的预期参数调用我的模拟方法两次。这不起作用,因为expects($this->once())将在第二次调用时失败。$mock->expects($this->once())->method('foo')->with('someValue');$mock->expects($this->once())->method('foo')->with('anotherValue');$mock->foo('someValue');$mock->foo('anotherValue');我也试过:$mock->expects($this->exactly(2))->method('foo'
我正在寻找测试以下静态方法的最佳方法(特别是使用Doctrine模型):classModel_UserextendsDoctrine_Record{publicstaticfunctioncreate($userData){$newUser=newself();$newUser->fromArray($userData);$newUser->save();}}理想情况下,我会使用一个模拟对象来确保fromArray(使用提供的用户数据)和save被调用,但这是不可能的,因为该方法是静态的.有什么建议吗? 最佳答案 PHPUnit的作