2015-09-26 9 views
5

が定義されていません。私は、すべてのテストケース用のテスト・レポートを生成したいが、私は
mocha --reporter html > report.htmlを実行したときに次のエラーを取得は、モカのテストを実行しているが、エラーを取得する:にReferenceError:文書は私がHTTP、REST APIをテストするために、モカのテストフレームワークを使用しています

/usr/local/lib/node_modules/mocha/lib/reporters/html.js:263 
    var div = document.createElement('div'); 
      ^
ReferenceError: document is not defined 
    at fragment (/usr/local/lib/node_modules/mocha/lib/reporters/html.js:263:13) 
    at new HTML (/usr/local/lib/node_modules/mocha/lib/reporters/html.js:53:14) 
    at Mocha.run (/usr/local/lib/node_modules/mocha/lib/mocha.js:459:18) 
    at Object.<anonymous> (/usr/local/lib/node_modules/mocha/bin/_mocha:393:18) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:902:3 

答えて

4

htmlという名前の記者がブラウザでモカを実行するときに使用するだけです。コマンドラインからMochaを実行しても動作しません。

mocha --reportersに従って「htmlドキュメント」を出力するdocという名前のレポーターがあります。ちなみに、mocha --reportersを実行すると、上記の理由から、htmlが記者として表示されません。

0

あなたは、この問題を回避するために、ヘッドレスブラウザを使用する必要があります。 mocha-phantomjsで試してください。

+1

これは私のために動作しませんでした。 – Calrion

-1

私は条件付きでdocumentを定義することによって、この問題の簡単なバージョンを解決することができた:

let document = (typeof document === "undefined") ? {} : document; 

私はあなたが同じアプローチを使用することができ期待しますが、createElementを皮肉って何かにdocumentを設定する必要があります。私はNode.jsのアプリをテストすることだし、モカ-PhantomJSは、ブラウザベースのテストを想定しているため

+0

それは実行可能ではありません。 OPだけでなく 'createElement'しかし' getElementsByTagName'、 'getElementById'、' devicePixeRatio'、 'width'、' height'、 'getContext'、' style'、 'className'、' addEventListener'、 'innerHTMLプロパティを模擬しなければなりません'、そしてもっと多くのものがあります。それは**巨大な**仕事です。 HTMLレポーターは、本格的なDOM環境を期待しています。 – Louis

+0

ああ、エラーはmochaのコードであり、テストされているコードではないことを忘れてしまった。それはより困難な問題です。原則はまだまだ可能かもしれませんが、私はDOMに近い(近い)DOMを模倣するライブラリがあると思いますが、そのアプローチが "同じアプローチ"であるかどうかはわかりません。 – ShadSterling

関連する問題