J'ai cette classe de cas définissent:Une classe de cas, héritant d'une classe, a des problèmes étant utilisés en tant que paramètre constructeur
class Protocol(protocol:String)
object Protocol {
def apply(protocol:String) :Protocol = {
protocol.toUpperCase match {
case "HTTP" => Http()
case "HTTPS" => Https()
case "Ftp" => Ftp()
case "Mail" =>Mail()
case other => new Protocol(other)
}
}
}
case class Http() extends Protocol("HTTP") {}
que j'utilise ensuite dans cette classe de cas:
case class Url(protocol: Protocol,
username: Option[String],
password: Option[String],
domainName: DomainName,
port: Option[Int],
path: Option[List[String]],
parameters: Option[List[Parameter]]) {
et puis essayez d'utiliser ici:
"An url class" should {
"represent http://localhost" in {
val url = Url(Http, None, None, localhost, None, None, None)
url.toString must beEqualTo("http://localhost")
}
pour que j'obtenir l'erreur du compilateur déconcertante suivante:
[error] C:\Users\Jim.Barrows\Desktop\workspaces\utils\src\test\scala\UrlSpec.scala:16: type mismatch;
[error] found : bizondemand.utils.models.internet.Http.type (with underlying type object bizondemand.utils.models.internet.Http)
[error] required: bizondemand.utils.models.internet.Protocol
[error] val url = Url(Http, None, None, localhost, None, None, None)
Qu'est-ce que je fais mal?