如何解决Phpunit睡眠测试持续时间错误
我刚刚开始使用 time-sensitive Testing
基本上我有这个
<?PHP
declare(strict_types=1);
// the test that mocks the external time() function explicitly
namespace App;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Stopwatch\Stopwatch;
class MyTest extends TestCase
{
/**
* @group time-sensitive
*/
public function testSomething()
{
$stopwatch = new Stopwatch();
$stopwatch->start('event_name');
sleep(10);
$duration = $stopwatch->stop('event_name')->getDuration();
var_dump($stopwatch->getEvent('event_name'));
$this->assertEquals(10000,$duration);
}
}
正如您在终端中看到的结果,PHP 显然没有等待 10 秒发生,这很好,但事件的持续时间仍然为 0。
PHPUnit 8.5.14 by Sebastian Bergmann and contributors.
Runtime: PHP 7.3.24-(to be removed in future macOS)
Configuration: /Users/julio93/Tech/Projects/tmp/test-PHPunit/symfo5.2/PHPunit.xml
Testing src
F 1 / 1 (100%)object(Symfony\Component\Stopwatch\StopwatchEvent)#394 (6) {
["periods":"Symfony\Component\Stopwatch\StopwatchEvent":private]=>
array(1) {
[0]=>
object(Symfony\Component\Stopwatch\StopwatchPeriod)#42 (3) {
["start":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=>
int(0)
["end":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=>
int(0)
["memory":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=>
int(6291456)
}
}
["origin":"Symfony\Component\Stopwatch\StopwatchEvent":private]=>
float(1614592788623.9)
["category":"Symfony\Component\Stopwatch\StopwatchEvent":private]=>
string(7) "default"
["morePrecision":"Symfony\Component\Stopwatch\StopwatchEvent":private]=>
bool(false)
["started":"Symfony\Component\Stopwatch\StopwatchEvent":private]=>
array(0) {
}
["name":"Symfony\Component\Stopwatch\StopwatchEvent":private]=>
string(10) "event_name"
}
Time: 123 ms,Memory: 6.00 MB
There was 1 failure:
1) App\MyTest::testSomething
Failed asserting that 0 matches expected 10000.
/Users/julio93/Tech/Projects/tmp/test-PHPunit/symfo5.2/src/App/MyTest.PHP:25
FAILURES!
Tests: 1,Assertions: 1,Failures: 1.
我基本上是在遵循文档,我试图为此启动一个新的 symfony 项目,但它仍然不起作用。 PHP 7.3 PHPUNIT 8.5 Symfony 5.2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。