mocha をブラウザで使う場合、mocha.setup()
で BDD, TDD などのスタイルを指定し、それに応じて describe
/it
, suite
/test
などの関数が window
に登録されます。RequireJS と一緒に使う場合、テストコードが評価される際に mocha.setup()
が呼ばれていないと、describe
などが定義されておらずエラーになってしまいます。
そこでまず思いつくのは require()
を入れ子状に呼ぶことですが、いまいちイケていません。
require(['mocha'], function () {
mocha.setup('bdd');
require(['test/foo_test'], function () {
mocha.run();
});
});
そこで、Stackoverflow にも書いたのですが、shim config の init
プロパティを使うと、require
を入れ子にしたりしなくてもうまくいきます。mocha が export される前に mocha.setup()
を呼ぶことができるためです。
requirejs.config({
shim: {
'mocha': {
init: function () {
this.mocha.setup('bdd');
return this.mocha;
}
}
}
});
require(['mocha', 'test/some_test'], function (mocha) {
mocha.run();
});
テストコードでは mocha を require
しましょう。
define(['mocha'], function (mocha) {
describe('Something', function () {
// ...
});
});