2017-08-24 12 views
1

私はこの「大理石の文字列」文書を読んだことがありますが、私はそれを理解しません。rxjs5の単体テスト方法は?

私がテストしたいのは基本的に "プロトコル"です。 Observableに接続され、データを発信する「もの」があります。私のテストは次のようになりようRx.NETとC#と私のバックエンドのコードでは、私は、プロトコルをテストするためのヘルパーを書かれている:

verifier.Send(new AddMaterialPickCommand(commandId, orderId, materialId: Guid.NewGuid(), quantity: 1)) 
      .FailWhen<CommandFailedEvent>(e => e.CommandId == commandId) 
      .ThenExpect<MaterialPickAddedEvent>(e => e.EntityId == orderId) 
      .ThenSend(new DeleteOrderCommand(commandId, orderId)) 
      .FailWhen<CommandFailedEvent>(e => e.CommandId == commandId) 
      .ThenExpect<OrderDeletedEvent>(e => e.EntityId == orderId) 
      .ExecuteAndWait(Timeout); 

C#ではそのすべてのものに観測を接続することは非常に容易とするそのも非常に簡単待つ。 IMOは非常に読みやすいテストコードです。

Rxjs5を使用して、私は待ったり、何か似たようなことを見つけませんでした。

sut.setValue("key1", "key2"); 
sut.getObservable("key1", "key2") 
    .subscribe(value => { 
     expect(value).toBe("testValue") // I want either execute this or fail after a timeout 
    }); 

setValueのは、実際にBehaviourSubjectにnext()を呼び出します。だから、気圧、私はちょうど私の観測可能で放出された単一の事が期待さ1であることを確認で失敗しています

私は無知だ、どんなアイデアですか?この例(working example)に示されているよう

答えて

0

これを行うには多くの方法があり、一つの方法は、タイムアウトである:

// Generates a value every second starting one second after subscription 
const eventEmulatorStream = Rx.Observable.interval(1000); 

// Listen to the event stream and timeout after 500 ms. 
// On timeout an error will be generated that will be caught in the 
// 'error' part of the subscribe. 
eventEmulatorStream 
    .timeout(500) 
    .subscribe({ 
     next: value => console.log(value), 
     error: err => console.log(JSON.stringify(err)) 
    }); 

私はあなたがRxJS referenceを見てみましょうことを示唆している、のlootsがありますそこにはおいしいものがあります。 RxJSを使用する方法と場所によっては、いくつかの機能にアクセスするためにいくつかのものをインポート/ロードする必要があるかもしれませんが、RxJSのドキュメントではすべて説明する必要があります。

関連する問題