Php Websocket测试[功能]
我正在PHP中为WebSocket使用Ratchet。我能够为websocket编写单元测试(phpspec)和验收测试(behat),但是我找不到一种方法来通过功能性phpunit测试来测试与websocket服务器的连接。。我认为检查连接是否正常运行的测试非常重要。我想到了如下的事情:Php Websocket测试[功能],php,testing,websocket,phpunit,ratchet,Php,Testing,Websocket,Phpunit,Ratchet,我正在PHP中为WebSocket使用Ratchet。我能够为websocket编写单元测试(phpspec)和验收测试(behat),但是我找不到一种方法来通过功能性phpunit测试来测试与websocket服务器的连接。。我认为检查连接是否正常运行的测试非常重要。我想到了如下的事情: $client = static::createClient(); $client->request('GET', '/book/3', array(), array(), array('HTTP_X-
$client = static::createClient();
$client->request('GET', '/book/3', array(), array(), array('HTTP_X-Requested-With' => 'XMLHttpRequest'));
$response = $client->getResponse();
$this->assertEquals(
440,
$response->getStatusCode()
);
$client = static::createClient();
$client->request('GET', '/book/3', array(), array(), array('HTTP_X-Requested-With' => 'XMLHttpRequest'));
$response = $client->getResponse();
$this->assertEquals(
440,
$response->getStatusCode()
);
或者,例如,创建一个经过身份验证的客户端而不是匿名客户端。如何将此功能测试“转换”为ratchet websocket测试?我希望这能部分解决您的问题,即ratchet websocket的哪个部分负责建立连接 测试本身可能不起作用,我对PHP测试没有太多经验,尽管它应该让您走上正确的道路
public function testCanConnect()
{
\Ratchet\Client\connect('ws://127.0.0.1:8080')->then(function($conn) {
$conn->on('message', function($msg) use ($conn) {
print $msg."\n";
$this->assertEquals('true',true);
$this->assertEquals("Hello World",$msg);
$conn->close();
});
$conn->send('Hello World!');
}, function ($e) {
echo "Could not connect: {$e->getMessage()}\n";
});
}
如果您还有任何问题,请告诉我。所以您否决了这个问题,但正如我所看到的,当我搜索websocket功能测试时,这是结果上显示的极少数页面之一。我会澄清一下我的问题。谢谢!正是我要找的。这就是“挂件”在服务器端连接到我用来建立连接的autobahnjs客户端框架。我必须警告您,PHPUnit代码可能不起作用,因为我以前用PHPUnit编写过一个单元测试。因为您似乎对它更有经验,这应该会让您走上正确的道路。是的,没关系,我知道如何编写PHPUnit I just不知道ratchet服务器端部分。这是缺少的部分。额外:当编写连接到某个对象的测试时,通常是功能测试。但是,我仍然可以使用phpunit编写它,并且知道如何:)如果你完成了测试,这样它就可以工作了,你能把它交给我吗?这样我就可以为遇到相同问题的其他人更改答案了?然后我可能会更新这个问题,但我认为你的答案对每个有相同问题的人都足够了。