gpt4 book ai didi

php - Symfony 2.6 覆盖 PHPUnit_Framework_Error

转载 作者:可可西里 更新时间:2023-10-31 22:54:22 24 4
gpt4 key购买 nike

我有一个经过单元测试的应用程序,我们已将其从 symfony 2.3 更新到 2.6。我们遵循了所有升级文档,只需要更改一些小的东西。除了 PHPUnit 测试外,一切都运行良好。

我们有 2 个单独的运行,一个仅用于测试实体类,它在预提交 Hook 上触发。第二个运行完整套件,包括数据库设置和整个九码。

自升级到 2.6 后,单元测试中抛出的 PHPUnit_Framework_Error 已被 Symfony 的 Symfony\Component\Debug\Exception\ContextErrorException 所取代,这会导致所有测试失败像这样:

/**
* @dataProvider objectTestDataProvider
* @expectedException \PHPUnit_Framework_Error
*/
public function testCanNotSetClientToArbitraryValue($value)

现在我不想将其更改为新的异常,因为运行仅实体测试套件不依赖于 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

这个新的 ErrorHandler 似乎没有记录,除了拉取请求和 this small article 外,我在谷歌中找不到太多关于它的信息

我试过:

  • 设置 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
}
}

如您所见,我只运行了两次完全相同的测试,但最后一次仍然导致错误:

MyControllerTest::testCreateOrder_2 Failed asserting that exception of type "Symfony\Component\Debug\Exception\ContextErrorException" matches expected exception "\PHPUnit_Framework_Error"

最佳答案

因为我在这里没有收到任何回复,所以我发布了一个 issue on Symfony's github他们确认这是不正确的行为。

问题已解决并且是 merged in 2.6-dev .

关于php - Symfony 2.6 覆盖 PHPUnit_Framework_Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26574062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com