У меня есть метод с подписьюКак сравнить тип результата как подкласс абстрактного класса в соответствии с?
def save(u: User): Future[Option[UserServiceError]]
, что я хочу, чтобы проверить с Specs2.
Я получил следующую иерархию типа:
abstract class UserServiceError(message: String)
object UserAlreadyExist extends UserServiceError("User already exists")
затем, тестовый код выглядит следующим образом:
users.save(...) must beSome(users.UserAlreadyExist).await
поэтому я ожидаю согласовань beSome
, чтобы понять, что UserAlreadyExist
является подтипом UserServiceError
из подпись метода.
Однако, это дает мне время компиляции проверка типа ошибку
type mismatch;
[error] found : org.specs2.matcher.Matcher[scala.concurrent.Future[Option[core.model.services.UserService#UserAlreadyExist.type]]]
[error] required: org.specs2.matcher.Matcher[scala.concurrent.Future[Option[core.model.services.UserService#UserServiceError]]]
У меня есть подозрение, что я пропустил что-то очень простое здесь, как UserAlreadyExist.type
не предполагается в соответствии с UserServiceError[without .type]
.
Где я делаю это неправильно?