Karma(testacular)を使用してnodejsバックエンドコードをテストする方法


87

バックエンドの単体テスト(Mochaで記述)を実行するようにKarmaを設定するにはどうすればよいですか?バックエンドテストスクリプトをに追加するとfiles = []、それrequireが未定義であると表示されて失敗します。


これは、CAN:私のプロジェクトを見てみましょう、行われるgithub.com/noamtcohen/Narmaを
noamtcohen

回答:


83

あなたはしません。Karmaは、ブラウザベースのコードをテストするためだけのものです。バックエンドにmochaテストがあり、フロントエンドにkarma / mochaがあるプロジェクトがある場合は、スクリプトでpackage.jsonを編集して、テストを次のように設定してみてください。mocha -R spec && karma run karma.con

次に、npm testtrueが返された場合、コミットまたはデプロイしても安全であることがわかります。


ありがとう!プロジェクトでセットアップすることをすでに計画していたGruntを使用したソリューションを見つけました。私自身の答えを見てください。
Sylvain 2013年

基本的に、JSのすべてのテストランナーはブラウザに依存していますか?それは役に立たない。

4
モカとジャスミンはブラウザに依存していません。ヘッドレスブラウザで実行する場合は、phantomjsの使用を検討してください。
ダンコーン

2
テストをブラウザに依存することは悪いことではないことに注意してください。テストにはさまざまな種類があり、ニーズに応じてエンドツーエンドのテストが有効です。視覚的な回帰をテストすることでさえ(Facebookのハクスリーを参照)、場合によっては重要です。
Ciro Costa

15

それができないようです(@dankohnに感謝します)。Gruntを使用した私の解決策は次のとおりです。

  • Karma:karma.conf.jsファイルを更新します

    • セットする autoWatch = false;
    • セットする singleRun = true;
    • セットbrowsers = ['PhantomJS'];(インライン結果を取得するため)
  • グラント:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • 2つのgruntタスクを構成します(以下のgruntファイルを参照)

Gruntfile.js:

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-simple-mocha');
  grunt.loadNpmTasks('grunt-karma');

  grunt.initConfig({
    simplemocha: {
      backend: {
        src: 'test/server-tests.js'
      }
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js'
      }
    }
  });

  // Default task.
  grunt.registerTask('default', ['simplemocha', 'karma']);
};
  • Grunt(オプション):スペックファイルまたはテストするファイルを変更した後に実行するようにgrunt-watchを構成します。

  • gruntコマンドを使用してすべてを実行します。


3
したがって、まだブラウザが必要です。ブラウザがヘッドレスであるというだけです。サーバー側のテストにカルマを使用していないことは間違いありません。

5
こんにちは、これはバックエンドにカルマを使用していません。これはモカを使用しているので、ブラウザはありません。これは、ファイルを保存するとすぐにすべてのテストを実行するための便利な方法です。
Sylvain 2014年

私がやっていることには本当にカルマは必要ありませんでしたが、これは私のモカテストを自動的に実行するためのうなり声のセットアップを取得するための簡単な道に私を導きました、それでそれをありがとう。
Michael Oryl 2014年

興味深いアプローチ。しかし、Sailsグローバルがテスト内で正しく認識されるようにするにはどうすればよいでしょうか。
dmvianna 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.