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

若き JavaScripter の悩み

何かをdisっているときは、たいていツンデレですので大目に見てやってください。愛です。

quickrunのためにnodeunitからmochaに乗り換えた #vim

Node.jsで動作するユニットテストツールをnodeunitからmochaに乗り換えた。理由はquickrunとの相性が悪かったためだ。

いままでは、VimShellnodeunitを叩いていたんだけど、あんまりに面倒なので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"
      \ }