akka/akka-core

Document ClusterSharding TestKit

Ouverte

#31 227 ouverte le 9 mars 2022

 (4 commentaires) (0 réaction) (0 personne assignée)Scala (3 547 forks)batch import
1 - triagedhelp wantedt:cluster-shardingt:docs

Métriques du dépôt

Stars
 (13 277 étoiles)
Métriques de merge PR
 (Merge moyen 8j 19h) (10 PRs mergées en 30 j)

Description

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.

Guide contributeur