小编llo*_*eta的帖子

Akka演员使用Scala进行单元测试

我对Scala很新,所以请保持温柔.

在我正在构建的应用程序中,我正在使用Akka演员,我想编写一些单元测试.我找到了为Akka演员编写单元测试的官方文档

但我无法确切地知道它应该如何运作.特别是,

val actorRef = TestActorRef(new MyActor)
// hypothetical message stimulating a '42' answer
val future = actorRef ? Say42
val Success(result: Int) = future.value.get
result must be(42)
Run Code Online (Sandbox Code Playgroud)

当我尝试的时候,我得到了not found: value Success,这并不奇怪.

然后我找到了如何测试Scala actor的示例

val actorRef = TestActorRef[TickTock]

implicit val timeout = Timeout(5 seconds)
val future = (actorRef ? new Tick("msg")).mapTo[String]
val result = Await.result(future, timeout.duration)

Assert.assertEquals("processed the tick message", result)
Run Code Online (Sandbox Code Playgroud)

诚然,这可能是旧的,但它很容易理解,更接近我通常使用的时候,我想使用期货,最重要的是工作.它确实需要我声明一些像ActorSystem,超时等这样的暗示,这似乎不是官方方式的情况......

如果可能的话,我想使用官方文档提出的方法,所以如果有人能帮助我了解它是如何工作的(尤其是Success位)以及如何使用它,我将不胜感激.

testing specs scala actor akka

9
推荐指数
2
解决办法
3422
查看次数

有没有办法递归地展平元组?

在 Rust 中,有没有办法使用traits 和impls 来(递归地)展平元组?

如果有帮助的话,可以使用 N 个嵌套对的东西是一个好的开始

trait FlattenTuple {
    fn into_flattened(self) -> /* ??? */
}

// such that
assert_eq!((1, (2, 3)).into_flattened(), (1, 2, 3))
Run Code Online (Sandbox Code Playgroud)

如果可以扩展任何类型的嵌套元组的工作,那就更好了:

assert_eq!(((1, 2), 2, (3, (4, 5))).into_flattened(), (1, 2, 2, 3, 4, 5))
Run Code Online (Sandbox Code Playgroud)

tuples generic-programming rust

6
推荐指数
1
解决办法
2957
查看次数

在给定LHS和RHS类型的情况下获取Add实现的关联输出类型

在Rust中,有没有办法在类型级别Add通过使用LHS(Self)和RHS类型召唤一个实现来使用它的Output类型(例如,泛型函数的返回类型)?

traits generic-programming rust type-level-computation

5
推荐指数
1
解决办法
100
查看次数

嵌套案例类之间的递归转换,其中目标中的字段是源类的未对齐子集

给定一对case类,Source并且Target,它们具有嵌套的case类,并且在每个嵌套级别,其中的字段Target都是未对齐的子集Source,是否有办法将通用的无Shape转换变换SourceTarget

例如,给定以下InternalExternal类:

object Internal {
  case class User(
    firstName: String,
    lastName: String,
    isAdmin: Boolean,
    address: Address
  )

  case class Address(
    street: String,
    country: String,
    blacklisted: Boolean
  )
}

object External {
  // Note that isAdmin is missing and the fields are jumbled
  case class User(
    lastName: String,
    firstName: String,
    address: Address
  )

  // blacklisted is gone
  case class Address(
    street: String,
    country: String
  ) …
Run Code Online (Sandbox Code Playgroud)

scala generic-programming typeclass type-level-computation shapeless

5
推荐指数
1
解决办法
392
查看次数

为什么和/或何时避免不及物种()或非传染性()?

我目前有一个仅在编译时需要依赖的SBT子项目,因此我认为这是一个使用的好地方,intransitive因此使用它的项目不需要下载该依赖项.

但是,根据SBT参考手册:

在某些情况下,您可能会发现为项目列出的依赖项不是构建它所必需的.例如,使用Felix OSGI框架的项目仅明确要求其主jar进行编译和运行.避免使用intransitive()或notTransitive()获取工件依赖项

措辞有点令人困惑,因为它不鼓励使用transitive()notTransitive()不解释为什么或何时(一直?).

sbt

4
推荐指数
1
解决办法
2430
查看次数

在Scala(猫或scalaz)中转换仿函数(F [A] => G [A])

在Cats或Scalaz中是否存在可在不同容器类型之间进行转换的类型类?例如

  • 选项〜>试试
  • 试试〜>未来
  • 试试〜>要么
  • 选项〜>列表

似乎FunctionK/ ~>/ NaturalTransformation可能是我正在寻找的,但没有任何实例为他们定义,我不知道为什么.

types functional-programming scala scalaz scala-cats

4
推荐指数
1
解决办法
270
查看次数