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