問題タブ [akka-testkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
347 参照

scala - Akka TestProbe によるスプレー ルート テスト

スプレー ルートでは、アクターに委任してリクエストを処理します。はRequestContextメッセージでそのアクターに送信されます。

私のテストではTestProbe、アクターの処理はコストがかかるため、アクターを a に置き換えました。

がないため、この仕様は失敗しますstatus。TestProbe は何もしないため、ctxは応答されませんでした。

この行status mustEqual StatusCodes.Successは私のテストにとって重要ではありませんが、仕様がコンパイルされないため、削除できません。メソッドはMatchResult.

アクターに委任されたルートをテストするにはどうすればよいですか?

0 投票する
1 に答える
5218 参照

scala - 別のアクターにメッセージを送信する Akka アクターをテストするにはどうすればよいですか?

ScalaTest と Akka TestKit を使用して、内部状態を変更せずに別のアクターにメッセージを送信するようにコード化したアクターの単体テストと統合テストを作成しています。たとえば、次のようにします。

processingの結果としてanotherActor処理されたことを確認するテストを書きたいと思います。古典的な例は、次のように、基になるアクターを取得し、メッセージの受信時に影響を受けるはずの内部状態を確認するために使用することです。AnotherMessageMyActorMyMessageTestActorRef

しかし、私の場合、そのような状態は気にしません。実際、そのような状態を保持することは避けたいと思っています。テスト対象のアクターTestProbeに登録する必要があるため、私が探していたものとはまったく異なりました。TestProbe.refほとんどの場合、テストに関する Akka ドキュメント ( http://doc.akka.io/docs/akka/snapshot/scala/testing.html ) のすべての例を見てきましたが、適切なものは見つかりませんでした。

0 投票する
2 に答える
1115 参照

java - Akka でのプライベート メソッドの単体テスト

私はakkaが初めてで、Javaでakkaを試しています。アクター内のビジネス ロジックの単体テストについて理解したいと思います。ドキュメントを読みましたが、アクター内の分離されたビジネス ロジックの唯一の例は次のとおりです。

これは単純ですが、テストしたいメソッドが公開されていることを意味します。ただし、アクターはメッセージを介してのみ通信する必要があることを考えると、パブリック メソッドを使用する理由はないと理解したので、メソッドをプライベートにしました。以下の例のように:

したがって、メソッドをテストするparseには、次のいずれかを行います。

  1. パッケージプライベートにするために必要
  2. または、アクターのパブリック インターフェースをテストします。つまり、次のアクターLogWriterが私のアクターから正しく解析されたメッセージを受信したことを確認します。LogRowParser

私の質問:

  1. オプション#1に欠点はありますか?アクターがメッセージのみを介して通信すると仮定すると、カプセル化とクリーンなオープン インターフェイスはそれほど重要ではありませんか?
  2. オプション #2 を使用しようとした場合、アクターから送信されたメッセージをテスト ダウンストリーム (テストLogRowParserとキャッチLogWriter) でキャッチする方法はありますか? さまざまな例を確認しましJavaTestKitたが、それらはすべて、送信者への応答であるメッセージをキャッチしており、新しいアクターに送信されたメッセージを傍受する方法を示すものはありません.
  3. 私が見逃している別のオプションはありますか?

ありがとう!

UPD:次 のようなオプションも検討したことを忘れていました。

  • ロジックをアクターからヘルパー クラスに完全に移動します。akkaではよくあることですか?
  • Powermock...しかし、再設計が可能であれば回避しようとしています
0 投票する
1 に答える
448 参照

scala - TestActorRef 内の context.parent 値とは何ですか?

Scala/Akkaで小さなテストをしています

それが生成する出力は

ログに表示されているcontext.parentように、アクターの内部が本当の親ではないのはなぜですか? testActor1(これは、サブジェクトを作成したときに親になると予想されるアクターです)。

もしその状態が予想されるなら - もしそうなら、なぜですか? そのようなアプローチの利点は見当たりません。

0 投票する
1 に答える
168 参照

scala - Play - Akka: アクターのテスト

Akka が提供する TestKit、TestActorRef、ImplicitSender について読みました。しかし、特定のアクターが特定のメッセージを受信したかどうかを確認する方法は見つかりませんでした。"expectMsg(Foo)" は、受信側アクターが "sender ! Foo" を実行する場合に役立つと思います。しかし、私のアプリケーションは異なります。別のアクター B にメッセージを送信するアクター A があります。B は、WebSocket を介して Java クライアントにメッセージを送信します。B が応答を受信すると、これはアクター C に転送されます。C がそのメッセージを (おそらく特定のタイムアウト内で) 受信したことを確認するにはどうすればよいですか? ありがとう。

0 投票する
1 に答える
480 参照

scala - ScalaTest を使用して Akka Actor で外部呼び出しを使用してモックする方法

ScalaAkkaおよびを含むエコシステム全体に不慣れです。ScalaTest

Actor外部システムへの呼び出しを行う問題に取り組んでいます。

LogReaderDisruptor main(Array())Java他の多くのことを行うクラスです。

私が現在持っているテストは次のようになります

どこUnitTestSpecのように見えますか(そしてここからインスピレーションを得ました)

質問

  • 呼び出しをモックしてLogReaderDisruptor main(Array())、それが呼び出されたことを確認するにはどうすればよいですか?

私は、、土地から来て、Javaここで私がしたであろうことは JUnitMockito

ここで ScalaTest を使用してそれを翻訳する方法がわかりません。

また、私は非常に新しく学習しているので、このコードは慣用的ではないかもしれません