lit*_*ito 29 scala akka scalatest
当我运行测试actor的基础示例时:
class MySpec(_system: ActorSystem) extends TestKit(_system) with ImplicitSender
with WordSpec with MustMatchers with BeforeAndAfterAll {
Run Code Online (Sandbox Code Playgroud)
我收到了错误:
class WordSpec needs to be a trait to be mixed in
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
1es*_*sha 39
在ScalaTest 2.0中,您可以找到类和特征WordSpec.名为WordSpecand trait 的类是WordSpecLike.所以只需使用WordSpecLike而不是WordSpec:
class MySpec(_system: ActorSystem) extends TestKit(_system) with ImplicitSender
with WordSpecLike with MustMatchers with BeforeAndAfterAll {
Run Code Online (Sandbox Code Playgroud)
除了1esha提出的内容之外,还有一个akka文档中的解决方案
如果由于某种原因从TestKit继承是一个问题,因为它是一个具体的类而不是一个特征,那就是TestKitBase:
import akka.testkit.TestKitBase
class MyTest extends TestKitBase {
implicit lazy val system = ActorSystem()
// put your test code here ...
shutdown(system)
}
Run Code Online (Sandbox Code Playgroud)
隐式lazy val系统必须完全相同地声明(当然你可以根据需要将参数传递给actor系统工厂),因为特性TestKitBase在构造过程中需要系统.
| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |