Node.jsで動作するユニットテストツールをnodeunitからmochaに乗り換えた。理由はquickrunとの相性が悪かったためだ。
いままでは、VimShellでnodeunitを叩いていたんだけど、あんまりに面倒なのでquickrunを使ってみることを決意。しかし…
- nodeunitの結果表示はエスケープシーケンスによる色づけが多く、quickrunのバッファ表示がきちゃない
- quickfixでの表示にしてみたら、エラー箇所のファイルパスがnodeunit本体を指すことがあってロケーションリストが正確じゃないことが判明(nodeunitのmachineoutレポ—ターの問題)
- テストケースの名前に空白が含まれるとエラー行の正規表現がバグる
- quickrunは絶対パス使うのだが、nodeunitは絶対パスのファイルをテストできない(pull req送った)
挫折… orz
なので、nodeunitに変わるユニットテストツールを探してみた(他の候補についてはNode.jsのテストフレームワークについてが参考になります)。んで、今イけてるらしいmochaを使うことにした。少し非同期のテストケースの構文にとまどったけど、概ね好感触。
mochaのインストールはnpm install -g mocha
でOK。
quickrun側にmochaの設定を追加するために、vimrcに以下の設定を追記する(前にlet g:quickrun_config = {}
が実行されているの前提)。
let g:quickrun_config['javascript/mocha'] = { \ 'command': 'mocha', \ 'tempfile': '%{tempname()}.js' \ }
あとは:QuickRun javascript/mocha
でquickrunされる。
できればquickfixに引っかかった箇所を表示したいのだけれど、mochaのレポ—ターを書かないといけないっぽいので保留。時間があったらやろうかなぁ。
一応nodeunit用のquickrunの設定も書き残しておく。
let g:quickrun_config['javascript/nodeunit'] = { \ 'command': 'nodeunit', \ 'cmdopt': '--reporter machineout', \ 'tempfile': '%{tempname()}.js', \ 'outputter': 'quickfix', \ 'outputter/quickfix/errorformat': "%EFail:%s:%f:%l:%c:%m,%Z,%IError:%s::::%m,%Z" \ }