Я пытался написать примеры модульных тестов для класса, который неявно принимает контекст субъекта в качестве своего параметра.Как я могу передать это?Насколько я знаю, это доступно только внутри актера.Есть ли способ, я мог бы передать его в качестве аргумента для модульного тестирования?
class HttpAuthenticationTest extends TestKit(ActorSystem("Test") with Matchers with FlatSpecLike with BeforeAndAfterAll with MockitoSugar
{
def tearDown() : Unit =
{
TestKit.shutdownActorSystem(system)
}
val smallRoute : server.Route =
get {
pathSingleSlash {
complete {
"..."
}
}
}
implicit val m_materializer : ActorMaterializer = ActorMaterializer()
val responseActorTestProbe = TestProbe()
val publisher : ActorRef = m_responseActorTestProbe.ref
val policy = mock[Policy]
val http_authentication = new HTTPAuthentication()
it should "check the generate and validate functions" in
{
http_authentication.check(m_publisher, policy, smallRoute, DiscoveryServiceAPIVersion)
}
}
Это то, что я пробовал до сих пор. Вот фрагмент кода:
abstract class Policy(val key : String)
class Authentication(implicit context : ActorContext)
{
implicit val m_executionContext = context.system.dispatchers.lookup("akka.actor.deployment.authentication-dispatcher")
val HEADER = "header"
val BASIC = HttpChallenge("Basic", None)
def check(publisher : ActorRef, api : Policy, route : Route, enum : Enumeration) : Route =
{
check1(Some(publisher), api, route , enum)
}
private def check1(publisherOption : Option[ActorRef], api : Policy, route : Route , enum : Enumeration) : Route =
{
...
}
private def check2(publisherOption : Option[ActorRef], route : Route , enum : Enumeration) : Route =
{
optionalHeaderValueByName(HEADER)
{
apiVersionOption =>
{
if(some condition .....)
{
route
}
else
{
extractRequest
{
...
}
}
}
}
}
def user(api : Policy, clientIDPrefixOptional : Option[String] = None)(credentialsOptional : Option[HttpCredentials]) : Future[AuthenticationResult[String]] =
{
...
}
} `
Методыдля которого я пытаюсь написать тестовые случаи являются проверкой, проверкой 1 и проверкой2.Я получаю контекст актера не определено.