[英]Unit Testing Components that Uses an Akka Actor
首先,我沒有問如何對Akka Actor進行單元測試。 我知道這樣做的技巧。 我的問題略有不同。
我正在開發一個Scala程序,我們稱其為client
,它不使用Akka Actors。 但是,該程序使用一個庫,我們稱它為server
,其接口是使用Akka Actor實現的。
然后,通過詢問模式 , client
與server
交互。
// This is the client program
class Client(uri: String) {
implicit val context: ActorSystem = ActorSystem("client-actor-system")
private val mainActor = context.actorSelection(uri)
def connect: Future[SomeClass] = {
implicit val timeout: Timeout = Timeout(5 seconds)
(mainActor ? Connect()).mapTo[CreationResponse]
}
}
現在,我想為Client
類寫下一些單元測試。 單元測試意味着單獨測試一個類。 每個外部依賴都應該被嘲笑。
如何在Client
類中模擬對mainActor
的引用? 如何在actor系統中為mainActor
注入模擬actor?
提前致謝。
我將mainActor
actor選擇注入客戶端,並使用Akka TestKits創建它。
當然,您需要一個ActorSelection
,而不是ActorRef
。 可以在這里找到一些解決方案:
或者,您可以通過向ActorRef
發送一個Identify
消息使mainActor
成為ActorSelection
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.