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

时间:2018-11-09 17:27:19

标签: phpunit hhvm

我的项目中有一些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版本(用于PHP 5.6兼容性)和最新的HHVM 3.29.1。

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

  

请注意,如果要在HHVM上运行PHPUnit,则必须   由于出现以下情况,在.travis.yml中明确安装了5.7版   HHVM和PHP7之间的兼容性问题

所以我想我很好。

我知道有一个已知问题(https://github.com/sebastianbergmann/phpunit/issues/1640)在PHPUnit中尚未解决并解决,在HHVM(https://github.com/hhvm/user-documentation/blob/master/guides/hhvm/06-inconsistencies/03-classes-and-objects.md)中记录了一个不一致的地方,但是尚不清楚是否存在解决方法。

详细信息在这里:

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用:

$this->expectException(UnexpectedValueException::class);

但是我想那会引发同样的问题。或者您尝试使用一种解决方法:

try {
    doSomething();
} catch (Exception $ex) {
    $this->assertInstanceOf(UnexpectedValueException::class, $ex);
}
$this->fail('Exception did not occur');

但是我会提出一个问题,即HHVM是否是您真正想要/必须支持的东西?许多主要框架和应用程序(composer,symfony等)都放弃了对它的支持: https://github.com/facebook/hhvm/issues/7198