問題タブ [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.
scala - Akka TestProbe によるスプレー ルート テスト
スプレー ルートでは、アクターに委任してリクエストを処理します。はRequestContext
メッセージでそのアクターに送信されます。
私のテストではTestProbe
、アクターの処理はコストがかかるため、アクターを a に置き換えました。
がないため、この仕様は失敗しますstatus
。TestProbe は何もしないため、ctx
は応答されませんでした。
この行status mustEqual StatusCodes.Success
は私のテストにとって重要ではありませんが、仕様がコンパイルされないため、削除できません。メソッドはMatchResult
.
アクターに委任されたルートをテストするにはどうすればよいですか?
scala - 別のアクターにメッセージを送信する Akka アクターをテストするにはどうすればよいですか?
ScalaTest と Akka TestKit を使用して、内部状態を変更せずに別のアクターにメッセージを送信するようにコード化したアクターの単体テストと統合テストを作成しています。たとえば、次のようにします。
processingの結果としてanotherActor
処理されたことを確認するテストを書きたいと思います。古典的な例は、次のように、基になるアクターを取得し、メッセージの受信時に影響を受けるはずの内部状態を確認するために使用することです。AnotherMessage
MyActor
MyMessage
TestActorRef
しかし、私の場合、そのような状態は気にしません。実際、そのような状態を保持することは避けたいと思っています。テスト対象のアクターTestProbe
に登録する必要があるため、私が探していたものとはまったく異なりました。TestProbe.ref
ほとんどの場合、テストに関する Akka ドキュメント ( http://doc.akka.io/docs/akka/snapshot/scala/testing.html ) のすべての例を見てきましたが、適切なものは見つかりませんでした。
java - Akka でのプライベート メソッドの単体テスト
私はakkaが初めてで、Javaでakkaを試しています。アクター内のビジネス ロジックの単体テストについて理解したいと思います。ドキュメントを読みましたが、アクター内の分離されたビジネス ロジックの唯一の例は次のとおりです。
これは単純ですが、テストしたいメソッドが公開されていることを意味します。ただし、アクターはメッセージを介してのみ通信する必要があることを考えると、パブリック メソッドを使用する理由はないと理解したので、メソッドをプライベートにしました。以下の例のように:
したがって、メソッドをテストするparse
には、次のいずれかを行います。
- パッケージプライベートにするために必要
- または、アクターのパブリック インターフェースをテストします。つまり、次のアクター
LogWriter
が私のアクターから正しく解析されたメッセージを受信したことを確認します。LogRowParser
私の質問:
- オプション#1に欠点はありますか?アクターがメッセージのみを介して通信すると仮定すると、カプセル化とクリーンなオープン インターフェイスはそれほど重要ではありませんか?
- オプション #2 を使用しようとした場合、アクターから送信されたメッセージをテスト ダウンストリーム (テスト
LogRowParser
とキャッチLogWriter
) でキャッチする方法はありますか? さまざまな例を確認しましJavaTestKit
たが、それらはすべて、送信者への応答であるメッセージをキャッチしており、新しいアクターに送信されたメッセージを傍受する方法を示すものはありません. - 私が見逃している別のオプションはありますか?
ありがとう!
UPD:次 のようなオプションも検討したことを忘れていました。
- ロジックをアクターからヘルパー クラスに完全に移動します。akkaではよくあることですか?
- Powermock...しかし、再設計が可能であれば回避しようとしています
scala - TestActorRef 内の context.parent 値とは何ですか?
Scala/Akkaで小さなテストをしています
それが生成する出力は
ログに表示されているcontext.parent
ように、アクターの内部が本当の親ではないのはなぜですか? testActor1
(これは、サブジェクトを作成したときに親になると予想されるアクターです)。
もしその状態が予想されるなら - もしそうなら、なぜですか? そのようなアプローチの利点は見当たりません。
scala - Play - Akka: アクターのテスト
Akka が提供する TestKit、TestActorRef、ImplicitSender について読みました。しかし、特定のアクターが特定のメッセージを受信したかどうかを確認する方法は見つかりませんでした。"expectMsg(Foo)" は、受信側アクターが "sender ! Foo" を実行する場合に役立つと思います。しかし、私のアプリケーションは異なります。別のアクター B にメッセージを送信するアクター A があります。B は、WebSocket を介して Java クライアントにメッセージを送信します。B が応答を受信すると、これはアクター C に転送されます。C がそのメッセージを (おそらく特定のタイムアウト内で) 受信したことを確認するにはどうすればよいですか? ありがとう。
scala - ScalaTest を使用して Akka Actor で外部呼び出しを使用してモックする方法
Scala
、Akka
およびを含むエコシステム全体に不慣れです。ScalaTest
Actor
外部システムへの呼び出しを行う問題に取り組んでいます。
はLogReaderDisruptor main(Array())
、Java
他の多くのことを行うクラスです。
私が現在持っているテストは次のようになります
どこUnitTestSpec
のように見えますか(そしてここからインスピレーションを得ました)
質問
- 呼び出しをモックして
LogReaderDisruptor main(Array())
、それが呼び出されたことを確認するにはどうすればよいですか?
私は、、土地から来て、Java
ここで私がしたであろうことは JUnit
Mockito
ここで ScalaTest を使用してそれを翻訳する方法がわかりません。
また、私は非常に新しく学習しているので、このコードは慣用的ではないかもしれません