gpt4 book ai didi

php - 使用 PHPUnit 测试异步方法

转载 作者:行者123 更新时间:2023-12-05 05:25:54 25 4
gpt4 key购买 nike

我尝试使用 sleep 和尝试方法。但它有时会失败。标准是什么?周围找不到任何明显的东西。谢谢。

function foo($callback)
{
$bar->asyncCall($callback);
}

function testFoo()
{
$semaphore = 1;
foo(function() {
$semaphore = 0;
});
sleep(5) until $semaphore == 0;
}

使用这种方法,testFoo() 有时永远不会返回。我怀疑某处出现了僵局。

最佳答案

php 作用域变量的方式,您不会在测试中更改相同的 $semaphore 变量。您在传递给 foo(...) 的匿名方法中创建了一个新变量。

您需要使用 use 关键字标记 var。

function testFoo()
{
$semaphore = 1;
foo(function() use ($semaphore) {
$semaphore = 0;
});
$this->assertEquals(0, $semaphore);
}

那么不需要 sleep ,因为从这里我们可以看到这不是异步的。需要有关 $bar->asynCall() 的更多信息。在此处查看有关变量范围的更多信息:http://php.net/manual/en/functions.anonymous.php

关于php - 使用 PHPUnit 测试异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29099372/

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