6

Node.JS でクラスターを実行していて、それを単体テストしたいとします。たとえば、ワーカーが停止した場合に、別のワーカーや関連するジョブをフォークするなど、クラスターが何らかのアクションを実行することを確認したいとします。または、特定の条件下では、追加のワーカーが生成されます。

これを行うには、クラスターを起動し、何らかの方法でその内部状態にアクセスする必要があると思います。次に、(たとえば) ワーカーを強制的にスタックさせ、遅延後に状態を確認します。もしそうなら、どのように状態をエクスポートしますか?

4

1 に答える 1

4

クラスター オブジェクトへの参照を返すようにマスターを設計する必要があります。テストでは、そのワーカーの 1 つを で強制終了できますcluster.workers[2].kill()。ワーカー オブジェクトには、子のプロセス オブジェクトへの参照もあり、これを使用してさまざまな条件をシミュレートできます。マスターがそのことを行う時間を確保するために、setTimeout を使用する必要がある場合があります。

ただし、上記の方法でもフォークが作成されるため、テスト シナリオでは望ましくない場合があります。もう 1 つのオプションは、モック ライブラリ (SinonJS など) を使用してclusterの fork メソッドをモック化し、取得する呼び出しの数をスパイすることです。cluster.emit('exit')マスター クラスター オブジェクトでを使用して、ワーカーの死亡をシミュレートできます。

注: これが私だけの問題かどうかはわかりませcluster.emitんが、何らかの理由で常に 2 回出力されるようです。

于 2013-05-26T15:14:53.050 に答える