2

以前はこのテストを行っていましたが、問題なくパスしました (3 つのメッセージがすべて処理されると、物語は完了です。

        Test.Saga<TestSagaHandler>(sagaId)
            .When(x =>
            {
                x.Handle(new TestSagaStartMessageOne
                {
                    Id = sagaId
                });
                x.Handle(new TestSagaStartMessageTwo
                {
                    Id = sagaId
                });
                x.Handle(new TestSagaNonStartingMessage
                {
                    Id = sagaId
                });
            });
            .AssertSagaCompletionIs(true);

ここで、TestSagaNonStartingMessage を独自のハンドラーに分割したいと考えており、次のことを行いました。

        Test.Saga<TestSagaHandler>(sagaId)
            .When(x =>
            {
                x.Handle(new TestSagaStartMessageOne
                {
                    Id = sagaId
                });
                x.Handle(new TestSagaStartMessageTwo
                {
                    Id = sagaId
                });
            });

        Test.Saga<TestSagaHandlerSingleMessage>(sagaId)
            .When(x =>
                x.Handle(new TestSagaNonStartingMessage
                {
                    Id = sagaId
                })
            )
        .AssertSagaCompletionIs(true);

ただし、TestSagaNonStartingMessage を処理する場合、サガ データは以前のハンドラーから保持されません。

持続性に問題がありますか、それともテストの構成が不適切ですか?

4

2 に答える 2

3

テストが正しく構築されていません。製造サンプルのテストプロジェクトを見て、どのように構成する必要があるかを確認してください。簡単な答えは、最初の.When(...)の後に2番目の.When(...)をチェーンすることです。

于 2011-06-02T21:06:39.677 に答える