ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

Unit系のテストがなじまない理由とChainingAssertionがはかどる理由

私に限って言えば初めて触ったテスティングフレームワークRSpecだったのでUnit系のテストになかなかなじめなかったというのもあります。

Unit系のテストとは、いわゆるMSUnitやRubyのTest::Unit、PHPUnitといったやつです。これらは
「条件」「期待する値」「実際の値」

class Test < Minitst::Unit::TestCase
  def test_sample
    assert_equal "Expected" actual
  end
end

の順番で書くのですが、これがなじめない理由ではないでしょうか。一度条件を読んでみるといいと思います。英語だと
「実際の値」「条件」「期待する値」
の順番になりますよね。どれひとつとしてあってねぇ
これが原因で頭が混乱してしまうのかもしれません。かたやRSpecの場合は
「実際の値」「条件」「期待する値」

describe Sample do
  it { expect(actual).to equal "Expected"
end

とばっちり同じ順番になります。

そこでChainingAssertion

.NET Frameworkが最初から提供しているテストはUnit系です。しかし、ChainingAssertionというライブラリを使うと…

result.Is(expected);

と、RSpecとほぼ同じ順番で書くことができます。一度使うと最初から提供されているテストの書き方がいかにオワコンかわかります。