NDM*_*NDM 4 php phpunit unit-testing symfony symfony-2.6
我有一个单元测试的应用程序,我们已经从symfony 2.3更新到2.6.我们遵循了所有升级文档,只能改变一些小问题.除了PHPUnit测试之外,一切都运行良好.
我们有两个单独的运行,一个用于仅测试实体类,这是在预提交钩子上触发的.第二个运行整个套件,数据库设置和整个九码.
现在自升级到2.6以来,PHPUnit_Framework_Error单元测试中的抛出已经被Symfony取代了Symfony\Component\Debug\Exception\ContextErrorException,这样的所有测试都失败了:
/**
* @dataProvider objectTestDataProvider
* @expectedException \PHPUnit_Framework_Error
*/
public function testCanNotSetClientToArbitraryValue($value)
Run Code Online (Sandbox Code Playgroud)
现在我不想将其更改为新的Exception,因为运行仅实体的测试套件不依赖于symfony组件,因此未加载symfony,因此错误是常规的,PHPUnit_Framework_Error因此更改它会使这些测试失败.
换句话说,当我运行一个测试类时,它运行,一旦运行symfony依赖测试,它就会失败:
# runs perfectly
phpunit -c app/phpunit.xml --debug src/My/Bundle/Tests/Entity
# fails when reaching the tests that ran perfectly in previous command
phpunit -c app/phpunit.xml --debug
Run Code Online (Sandbox Code Playgroud)
这个新的ErrorHandler似乎没有文档,除了pull请求和这篇小文章我在google中找不到它
我试过了:
SYMFONY_DEBUG=0环境变量,但这似乎没有任何区别.debug.error_handler.throw_at: 0参数添加到我的test_config.yml编辑:
根据@cerad的请求,我试图隔离测试以尝试尽可能少地重现代码,我设法用4个测试重现:
class MyControllerTest extends WebTestCase
{
public function testRoutesLoaded_1()
{
$client = self::createClient();
/** @var Router $router */
$router = $client->getKernel()->getContainer()->get('router');
$this->assertEquals('/menu', $router->generate('front_menu'));
}
/**
* @expectedException \PHPUnit_Framework_Error
*/
public function testCreateOrder_1()
{
new Order(); // required parameter missing
}
public function testRoutesLoaded_2()
{
$client = $this->createNewFrontClient();
/** @var Router $router */
$router = $client->getKernel()->getContainer()->get('router');
$this->assertEquals('/menu', $router->generate('front_menu'));
}
/**
* @expectedException \PHPUnit_Framework_Error
*/
public function testCreateOrder_2()
{
new Order(); // required parameter missing
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我只运行了相同的测试2次,但最后一次仍会导致错误:
MyControllerTest :: testCreateOrder_2无法断言"Symfony\Component\Debug\Exception\ContextErrorException"类型的异常匹配预期的异常"\ PHPUnit_Framework_Error"
由于我没有在这里得到任何回复,我在Symfony的github上发布了一个问题,他们证实这是不正确的行为.
问题已解决,并在2.6-dev中合并.
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |