Property Based Testing
テストデータを半自動生成する
Mastering flatMap !
flatten と map が、同時に行われるのが flatMap - map -> flatten
Seq(Seq(1,2,3), Seq(), Seq(5.6)).flatten(identity) // List(1, 2, 3, 5.6): scala.collection.Seq
Seq(Seq(1,2,3), Seq(), Seq(5.6)).flatMap(identity) // List(1, 2, 3, 5.6): scala.collection.Seq
Seq(Seq(1,2,3), Seq(), Seq(5.6)).map(identity) // List(List(1, 2, 3), List(), List(5.6)): scala.collection.Seq
Seq(Seq(1,2,3), Seq(), Seq(5.6)) flatten { x => x.size } // コンパイルエラー
Seq(Seq(1,2,3), Seq(), Seq(5.6)) flatMap { x => x.size } // コンパイルエラー
Seq(Seq(1,2,3), Seq(), Seq(5.6)) map { x => x.size } // List(3, 0, 1): scala.collection.Seq
Seq(Seq(1,2,3), Seq(), Seq(5.6)) flatten { x => Seq(x.size) } // List(3, 0, 1): scala.collection.Seq
Seq(Seq(1,2,3), Seq(), Seq(5.6)) flatMap { x => Seq(x.size) } // List(3, 0, 1): scala.collection.Seq
Seq(Seq(1,2,3), Seq(), Seq(5.6)) map { x => Seq(x.size) } // List(List(3), List(0), List(1)): scala.collection.Seq
Cake パターン
NG
trait UserRepository
object UserRepositoryImpl extends UserRepository
object UserService {
val rep = UserRepositoryImpl
}