読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

expect-returnsに無引数でのテスト記法追加

phaendal/expect-returns · GitHub

昨日作ったexpect-returnsに、引数無しでのテストを追加した。しかし状態によって変化したり、副作用があるテストはもっと別の形式で明示的に書くようにしたほうが良さそうなので消すかもしれない。

記法は、一貫性保って

(expect (lambda () '(hello world)) returns
  _ => '(hello world))

みたいに無引数を表すシンボルにするか、

(expect (lambda () '(hello world)) returns '(hello world))

と一つだけのテストを行えるようにするか悩んだけど、後者にした。

選択理由/メリット

  • 短いし、「この関数は常にこの値を返す」と明示的
  • 無引数での値を期待するような関数はまず状態を前提としていると思うので、それぞれのテストにつきlambdaが一つの方が一貫性がありそう
  • エラー処理などのために無引数も取れる関数(ディスパッチャとか?)のテストを独立させる必要がある。タイプ量は増えるけど特別扱いできる

悩んだ理由/デメリット

  • 間違えて返り値の記述を忘れた場合に、気づくまでに時間がかかるかも
  • 1つ以上の引数も取れるが無引数の場合が特別じゃなく、かつ状態に依存しない関数(想像つかない)のテストも独立させないといけない

うーん悩む。追加した理由が「必要になるかも」だしYAGNIに反してるから消すかも。

広告を非表示にする