繁体   English   中英

您如何测试 Lagom 中的读取端处理器?

[英]How do you test the read-side processor in Lagom?

我有一个应该将条目写入 Cassandra 的读取端,我想编写一个测试以确保将事件发送到读取端,然后在 Cassandra 中检查该行确实已被写入。 我应该如何在测试中访问 Cassandra session?

我按照以下方式进行:

class MyProcessorSpec extends AsyncWordSpec with BeforeAndAfterAll with Matchers {

  private val server = ServiceTest.startServer(ServiceTest.defaultSetup.withCassandra(true)) { ctx =>
    new MyApplication(ctx) {
      override def serviceLocator = NoServiceLocator

      override lazy val readSide: ReadSideTestDriver = new ReadSideTestDriver
    }
  }

  override def afterAll(): Unit = server.stop()

  private val testDriver = server.application.readSide
  private val repository = server.application.repo
  private val offset = new AtomicInteger()

  "The event processor" should {
    "create an entity" in {
      for {
        _ <- feed(createdEvent.id, createdEvent)
        entity <- repository.getEntityIdByKey(createdEvent.keys.head)
        entities <- repository.getAllEntities
      } yield {
        entity should be(Some(createdEvent.id))
        entities.length should be(1)

      }
    }
  }

  private def feed(id: MyId, event: MyEvent): Future[Done] = {
    testDriver.feed(id.underlying, event, Sequence(offset.getAndIncrement))
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM