2016-05-17 7 views
2

私はラチェットをPHPのウェブソケットに使用しています。私はユニット(phpspec)と受け入れテスト(behat)をWebソケット用に書くことができましたが、機能的なphpunitテストを使ってWebSocketサーバーへの接続をテストする方法を見つけることはできません。接続が稼働していることは非常に重要です。/WSのURLにWebsocket Testing [機能]

  1. PHPUnitの
  2. に(ラチェット)クライアントを作成します
  3. 接続(例えばクライアント - >
  4. (ホスト、ポート、...)接続のping用WebSocket:私は次のようなものを考えました

いくつかのメッセージを送受信する(クライアントのメソッドを呼び出す)。問題は、どのクラスが接続の確立を担当するのかわかりません。ラチェットでWebsocketをリクエストできるクライアント)と、テストがどのように表示されるかを示します。ラチェットクライアントを作成するにはphpunitの機能テストでwebsocketを接続してリクエストできますか?

$client = static::createClient(); 
$client->request('GET', '/book/3', array(), array(), array('HTTP_X-Requested-With' => 'XMLHttpRequest')); 
$response = $client->getResponse(); 
$this->assertEquals(
    440, 
    $response->getStatusCode() 
); 

または例えば:、私は、次の機能のための機能的テストの範囲内、一例として

(標準PHPUnitの機能テスト中Webクライアントを例えばに類似)を行うことができ匿名の代わりに認証されたクライアントを作成します。どのように、この機能テストをラチェットウェブソケットに変換することは可能でしょうか?

+0

あなたが質問をdownvoteが、私が見ることができるように、私はwebsocket機能テストのために、これは非常に少数のページの結果に表示されます。私は少し私の質問を明確にします。 – user3746259

答えて

2

これは、ラチェットウェブソケットのどの部分が接続を担当しているかについてのご質問を部分的に解決したいと考えています。

テスト自体はおそらくうまくいかないでしょう。私は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"; 
     }); 
    } 

さらにご質問がありましたら、お知らせください。

+0

ありがとうございました!まさに私が探していたもの。これは、私が接続を確立するために使用しているautobahnjsクライアント側のフレームワークに対するサーバー側の "ペンダント"です。 – user3746259

+0

PHPUnitのコードは、以前はPHPUnitでUnitTestを1つ作成して以来、おそらく動作していないと警告する必要があります。 経験が豊富であるように見えるので、これは正しい軌道に乗るはずです。 – mitchken

+0

ありがとう、私はphpunitを書く方法を知っています。私はちょうどラチェットのサーバー側の部分を知らなかった。それは欠けている部分だった。 Extra:何かに接続するテストを書くとき、それは通常は機能テストです。しかし、まだ、私はphpunitでそれを書いて、方法を知ることができます:) – user3746259