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



我的项目中有一些PHPUnit测试,其中一些测试使用了@expectedException功能,如下所示。

/**
* @expectedException LeagueOAuth2ClientProviderExceptionIdentityProviderException
**/
public function testExceptionThrownWhenErrorObjectReceived()
{
...
}
/**
* @expectedException LeagueOAuth2ClientProviderExceptionIdentityProviderException
**/
public function testExceptionThrownWhenOAuthErrorReceived()
{
...
}
/**
* @expectedException UnexpectedValueException
**/
public function testExceptionThrownWhenAskingForResourceOwner()
{
...
}

我在travis的帮助下在PHP 5.6、7.0、7.1和7.2下运行它们,没有问题,但HHVM失败了:

There were 3 errors:
1) MrjoopsOAuth2ClientTestProviderJiraTest::testExceptionThrownWhenErrorObjectReceived
MrjoopsOAuth2ClientProviderExceptionJiraIdentityProviderException: Validation Failed
2) MrjoopsOAuth2ClientTestProviderJiraTest::testExceptionThrownWhenOAuthErrorReceived
MrjoopsOAuth2ClientProviderExceptionJiraIdentityProviderException: error_collection
3) MrjoopsOAuth2ClientTestProviderJiraTest::testExceptionThrownWhenAskingForResourceOwner
UnexpectedValueException: Invalid response received from Authorization Server. Expected JSON.

我使用最新的PHPUnit 5.7版本(与PHP 5.6兼容(和最新的HHVM 3.29.1。

Travis在他们的网站上写道:

请注意,如果您想在HHVM上运行PHPUnit,您必须由于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),但我不清楚是否存在变通方法。

此处提供详细信息:

  • 测试文件:https://github.com/mrjoops/oauth2-jira/blob/develop/test/src/Provider/JiraTest.php
  • Travis构建:https://travis-ci.org/mrjoops/oauth2-jira/jobs/452936060

提前感谢您的帮助。

您可以尝试使用:

$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

最新更新