akka/akka-core

Document ClusterSharding TestKit

Aperta

#31.227 aperta il 9 mar 2022

 (4 commenti) (0 reazioni) (0 assegnatari)Scala (3547 fork)batch import
1 - triagedhelp wantedt:cluster-shardingt:docs

Metriche repository

Star
 (13.277 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

Apologies in advance if this request is already implemented in some way but I didn't find anything in the doc/internet. My scenario is that I'm using akka persistence with akka cluster sharding for implementing a ES service.

The issue that I'm finding out is that I'm not able to basically test the classes that are using the sharding calls. For example, suppose I've the following class:

class MyService(sharding: ClusterSharding) {
     def method1(id: Int): Future[CustomObj]
}

where MyService.method1(id) is using the sharding object via the ask pattern.

My expected feature would be to have a simple way to mock the sharding responses.

The test that I would like (using Scalatest) is to write a mock on the responses generated by the sharding.

I would like to have something like this:

val sharding: MyClusterShardingMock = MyClusterShardingMock()
val subject = new MyService(sharding)

//define the mocking before call the class method
sharding.respondTo(req: expectedCommand)(response: expectedResponse)

subject.method1("123").futureValue mustBe response

Is there any way to achieve something similar to this? I'm in a point that I'm unable to unit testing some classes that depends from ClusterSharding. Thanks in advice.

Guida contributor