Не удалось найти неявное значение для FromRecord

Я пытаюсь начать работу с avro & avro4s, и у меня возникают проблемы с работой глупого примера.

Я даже не могу получить свою собственную версию теста, найденную в исходном репозитории, для компиляции - https://github.com/sksamuel/avro4s/blob/master/avro4s-core/src/test/scala/com/sksamuel/avro4s/AvroJsonInputTest.scala

Я получаю сообщение об ошибке, указанное в заголовке could not find implicit value for parameter fromRecord: com.sksamuel.avro4s.FromRecord[Foo],

package test

import java.io.ByteArrayInputStream

import com.sksamuel.avro4s._
import org.specs2.mutable.Specification

class AvroSpec extends Specification {
  "My classes" should {
    "be deserialized by avro" in {
      case class Foo(num: Int, name: String)
      val json = """{ "num": 17, "name": "jibba-jabbba" }"""
      val inst = Foo(num = 17, name = "jibba-jabba")
      val in =  new ByteArrayInputStream(json.getBytes("UTF-8"), 0, json.length)
      val foo = new AvroJsonInputStream[Foo](in).iterator.toSet
      in.close()

      foo mustEqual Set(inst)
    }
  }
}

Я использую Scala 2.11.8 и avro 1.7.0. Что я делаю неправильно?

1 ответ

Переместите объявление класса case за пределы определения метода:

package test

import java.io.ByteArrayInputStream

import com.sksamuel.avro4s._
import org.specs2.mutable.Specification

case class Foo(num: Int, name: String)
class AvroSpec extends Specification {
  "My classes" should {
    "be deserialized by avro" in {
      val json = """{ "num": 17, "name": "jibba-jabbba" }"""
      val inst = Foo(num = 17, name = "jibba-jabba")
      val in =  new ByteArrayInputStream(json.getBytes("UTF-8"), 0, json.length)
      val foo = new AvroJsonInputStream[Foo](in).iterator.toSet
      in.close()

      foo mustEqual Set(inst)
    }
  }
}
Другие вопросы по тегам