アサーションルーレット
furuk4wa.icon これを見て知った
本日 @t_wada 師の講義を受けた若手スーパーエースが、早速モブプロで既存プロダクトのアサーションルーレット気味だったテストコードを、繰り返しがなくテストケースごとの責務が明確で言語化された形式に鮮やかにリファクタリングしてみせてた。
アサーションをひとつのテストに何個も書くのはアンチパターンであるということも理解をしました。
ひとつのテストにアサーションを複数書くと、 最初のアサーションがエラーであると次以降のアサーションは評価されずにテストが終わってしまい、 TDDのサイクルを正常に回すことができなくなるというのが理由です。
このアンチパターンを「アサーションルーレットアンチパターン」と呼んでいました。
code:javascript
it("数を渡したらその数の文字列が返ること") {
let fizzBuzz = FizzBuzz()
expect(fizzBuzz.convert(1)).to(equal("1"))
expect(fizzBuzz.convert(2)).to(equal("2"))
}
こうではなく
code:javascript
context("数を渡したらその数の文字列が返ること") {
it("1を渡したら'1'という文字列が返ること") {
expect(FizzBuzz().convert(1)).to(equal("1"))
}
it("2を渡したら'2'という文字列が返ること") {
expect(FizzBuzz().convert(2)).to(equal("2"))
}
}
これが好ましいということですね。