第三章 用 Actors 进行测试驱动开发

本章中介绍

  • 测试 Actors,
  • 遵循的规则,
  • 开发速度。

想想 TDD 第一次出现的场景一定很有趣,其出现的主要原因是测试花的时间太长,阻碍了开发。 现在虽然很少听到,无论是不同的技术栈中,还是不同阶段,测试的压力都有巨大不同(如,单元测试 vs. 集成测试) 当测试限定在单个组件时,每个人在测试方面都有快速的,流畅的经验。 当测试设计到合作,轻松、快速就很快消失。 Actors 提供了针对这个问题的有趣的方案,因为如下原因:

  • Actors 与测试直接对应,因为他们体现了行为(而且基本上所有 TDD 都至少包含 一部分的 BDD(Behavior-Driven Development,行为驱动开发)),

  • 通常普通的单元测试只测试接口,或者需要分别测试接口和功能,

  • Actors 建立在消息传递基础上,这对测试有巨大的优势,因为你可以很容易地 通过发送消息来模拟行为。

开始测试(和编码)前,我们看几个上一章中的概念,并展示在代码中的应用, 介绍用来创建 actors 和发送、接受消息的 Actor API 我们还会介绍一些 actor 如何实际运行的重要细节,以及需要遵循的防止出现问题规则。 之后,我们来看一些常用场景的实现,用测试驱动的方法来写 actors,并立即验证代码行为 与我们预期的一致。 每一步中,我们首先集中于我们要达成的目标(TDD 的一个要点)。 然后,我们写一个针对 Actor 的测试规范,这将会启动编码(TDD 的测试优先风格)。 之后就是我们写足够的代码来让测试通过,然后再重复进行。 编码时会接触到需要遵循的防止意外共享状态的规则,以及一些会影响测试开发的 Akka 中的 acotor 如何工作的细节。