【问题标题】:How do you test the read-side processor in Lagom?您如何测试 Lagom 中的读取端处理器?
【发布时间】:2020-08-30 04:30:59
【问题描述】:

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

【问题讨论】:

    标签: scala testing lagom


    【解决方案1】:

    我这样做是这样的:

    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))
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多