如何使phpunit@expectedException与hhvm一起工作?

如何使phpunit@expectedException与hhvm一起工作?,phpunit,hhvm,Phpunit,Hhvm,我的项目中有一些PHPUnit测试,其中一些使用@expectedException特性,如下所示 /** * @expectedException League\OAuth2\Client\Provider\Exception\IdentityProviderException **/ public function testExceptionThrownWhenErrorObjectReceived() { ... } /** * @expectedException Lea

我的项目中有一些PHPUnit测试,其中一些使用@expectedException特性,如下所示

/**
 * @expectedException League\OAuth2\Client\Provider\Exception\IdentityProviderException
 **/
public function testExceptionThrownWhenErrorObjectReceived()
{
    ...
}

/**
 * @expectedException League\OAuth2\Client\Provider\Exception\IdentityProviderException
 **/
public function testExceptionThrownWhenOAuthErrorReceived()
{
    ...
}

/**
 * @expectedException UnexpectedValueException
 **/
public function testExceptionThrownWhenAskingForResourceOwner()
{
    ...
}
我在travis的帮助下在PHP 5.6、7.0、7.1和7.2下运行它们,没有问题,但HHVM失败:

There were 3 errors:
1) Mrjoops\OAuth2\Client\Test\Provider\JiraTest::testExceptionThrownWhenErrorObjectReceived
Mrjoops\OAuth2\Client\Provider\Exception\JiraIdentityProviderException: Validation Failed
2) Mrjoops\OAuth2\Client\Test\Provider\JiraTest::testExceptionThrownWhenOAuthErrorReceived
Mrjoops\OAuth2\Client\Provider\Exception\JiraIdentityProviderException: error_collection
3) Mrjoops\OAuth2\Client\Test\Provider\JiraTest::testExceptionThrownWhenAskingForResourceOwner
UnexpectedValueException: Invalid response received from Authorization Server. Expected JSON.
我使用最新的PHPUnit 5.7版本(用于PHP5.6兼容性)和最新的HHVM3.29.1

特拉维斯在他们的网站上写道:

请注意,如果要在HHVM上运行PHPUnit,必须 在.travis.yml中显式安装5.7版,原因是 HHVM和PHP7之间的兼容性问题

所以我想我没事

我知道有一个已知的问题()在PHPUnit中没有解决和解决,HHVM()中记录了一个不一致性,但我不清楚是否存在解决方法

详情如下:

  • 测试文件:
  • 特拉维斯建筑:
提前感谢您的帮助。

您可以尝试使用:

$this->expectException(UnexpectedValueException::class);
但我想这也会引起同样的问题。或者您尝试使用一种变通方法:

try {
    doSomething();
} catch (Exception $ex) {
    $this->assertInstanceOf(UnexpectedValueException::class, $ex);
}
$this->fail('Exception did not occur');
但我想问一个问题,HHVM是否是你真正想要/必须支持的东西?许多主要框架和应用程序(composer、symfony等)都放弃了对它的支持: 您可以尝试使用:

$this->expectException(UnexpectedValueException::class);
但我想这也会引起同样的问题。或者您尝试使用一种变通方法:

try {
    doSomething();
} catch (Exception $ex) {
    $this->assertInstanceOf(UnexpectedValueException::class, $ex);
}
$this->fail('Exception did not occur');
但我想问一个问题,HHVM是否是你真正想要/必须支持的东西?许多主要框架和应用程序(composer、symfony等)都放弃了对它的支持:

我正在寻找一个解决方案,而您的解决方案正在发挥作用,谢谢您!关于HHVM支持,由于我为现有库开发了一个额外的提供程序,我倾向于与上游库支持的引擎兼容,这就是为什么我也支持PHP5.6,即使PHP本身不再支持它。我正在寻找一个解决方法,而您的方法正在工作,谢谢!关于HHVM支持,由于我为现有库开发了一个额外的提供者,我倾向于与上游库支持的引擎兼容,这就是为什么我也支持PHP5.6,即使PHP本身不再支持它。