2017-03-17 12 views
0

プロジェクトのテスト環境を少しセットアップしました。ユニットテストにはmochachaiを使用する必要があります。私は今、結果が正しく表示されている、私のブラウザでテストランナーを呼び出すと単一のテストファイル内でコンソールとブラウザでchaiを使用してmochaテストを実行できますか?

let assert = chai.assert; 

describe('simple test',() => { 
    it('should be equal',() => { 
     assert.equal(1, 1); 
    }); 
}); 

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Mocha Tests</title> 
    <link rel="stylesheet" href="node_modules/mocha/mocha.css"> 
    </head> 
    <body> 
    <div id="mocha"></div> 
    <script src="node_modules/mocha/mocha.js"></script> 
    <script src="node_modules/chai/chai.js"></script> 
    <script>mocha.setup('bdd')</script> 
    <script src="test/chaiTest.js"></script> 
    <script>mocha.run();</script> 
    </body> 
</html> 

chaiTest.jsファイルcontinasこの簡単なテスト:私は、テストランナーとしてhtmlファイルを設定しました。それはうまく動作します。しかし、コンソールでmochaを実行すると、それはchai is not definedと表示されます。

コンソールでこれを動作させるには、chairequireをテストファイルの最初の行に追加するだけです。

let chai = require('chai'); 

今テストは、コンソールに細かい動作しますが、私は、ブラウザでテストを実行するとき、それはrequireundefinedであることを私に伝えます。

私は知っています、これらのエラーは完全にここで意味があります!それらは未定義です。しかし、mochachaiでテストを書いて、それらをブラウザとコンソールで実行させる方法はありますか?

ブラウザとコンソール用に2つのテストファイルを作成できることがわかりました。しかし、それは維持するのが難しいでしょう。だから私は両方の環境で正しく実行される単一のテストファイルを書こうと思っています...

答えて

1

私は今自分で解決策を見つけました。 chaiの設定ファイルを使用する必要があります。私の場合のように、私はそれをchaiconf.jsと呼んだ。このファイルには、デフォルト設定のchaiを書き込むことができます。このファイルは、各テストの前に必要になります。マイchaiconf.js

let chai = require("chai"); 

// print stack trace on assertion errors 
chai.config.includeStack = true; 

// register globals 
global.AssertionError = chai.AssertionError; 
global.Assertion = chai.Assertion; 
global.expect = chai.expect; 
global.assert = chai.assert; 

// enable should style 
chai.should(); 

今すぐすべてのテストにこの設定を追加します。コンソールでnpm testを使用するたびに、chaiconf.jsはテスト前に必要とされますが、今

"scripts": { 
    "test": "mocha --require chaiconf.js" 
}, 

とブラウザのように、chaiは世界的に利用できるようにする。このためにpackage.jsonのスクリプトエントリを作成します。


設定ファイルのないもう一つの方法は、受信するインライン決定を使用することですchai

let globChai = typeof require === 'undefined' ? chai : require('chai'); 
関連する問題