1

プロセスフォークを実行し、現在のプロセスをターミナルから切り離してデーモンとして続行する抽象PHPクラスがあります。

このクラス (PHPUnit) を単体テストする方法についてのヒントを得たいと思います。この要約に基づいてテストに最小限のソケットサーバーを実装し、それと通信するとしましょう。より良いアイデアはありますか?

クラスはここで見ることができます: https://github.com/tcz/PHPTracker/blob/master/lib/PHPTracker/Threading/Forker.php

ありがとうございました!

4

2 に答える 2

1

gphilip が言ったように、runkit を使用して pcntl_fork() をモックし、コードのすべてのブランチをテストできます。例を次に示します: http://kpayne.me/2012/01/17/how-to-unit-test-fork/

于 2012-01-19T05:56:24.953 に答える
0

ここでテストする必要があるのは次の 2 つです。

  1. フォークが機能する場合
  2. 残りのコード

フォークが機能したかどうかのテストは、フォークされたプロセスの ID をどこかに保存し、それがまだ実行されているかどうかを確認することで実行できます。クラスの残りの部分は、フォークせずに通常どおりにテストできます。

于 2011-03-25T05:57:08.430 に答える