为什么在CTestCase类中调用PHPUnit会起作用:
require_once('PHPUnit/Autoload.php');
....
PHPUnit_Framework_Assert::assertNotNull($object);
但如果我在组件目录的文件中以相同的方式调用它,它会显示:
require_once(PHPUnit/Autoload.php): failed to open stream: No such file or directory
即使我添加与CTestCase中相同的导入,它也不起作用。
require_once('PHPUnit/Util/Filesystem.php'); // workaround for PHPUnit <= 3.6.11
require_once('PHPUnit/Autoload.php');
spl_autoload_unregister('phpunit_autoload');
Yii::registerAutoloader('phpunit_autoload');
它告诉我:
require_once(PHPUnit/Util/Filesystem.php): failed to open stream: No such file or directory
我正在使用名称空间,并希望使用design-by-contract。
我真的希望有人可以帮助我。
答案 0 :(得分:0)
如果您在Frameworks / test / CTestCase.php内部冲浪,那么您会发现这样的,
require_once('PHPUnit/Runner/Version.php');
require_once('PHPUnit/Util/Filesystem.php'); // workaround for PHPUnit <= 3.6.11
spl_autoload_unregister(array('YiiBase','autoload'));
require_once('PHPUnit/Autoload.php');
spl_autoload_register(array('YiiBase','autoload')); // put yii's autoloader at the end
if (in_array('phpunit_autoload', spl_autoload_functions())) { // PHPUnit >= 3.7 'phpunit_autoload' was obsoleted
spl_autoload_unregister('phpunit_autoload');
Yii::registerAutoloader('phpunit_autoload');
}
我认为,它会帮助您理解您的问题。
答案 1 :(得分:0)
感谢post我找到了解决问题的方法。 以下是在Yii控制器和帮助程序类中启用PHPUnit的Design-By-Contract断言的代码。
spl_autoload_unregister(array('YiiBase','autoload'));
require_once('PHPUnit/Autoload.php');
spl_autoload_register(array('YiiBase','autoload'));