Mocha と RequireJS を使用して node/npm をセットアップするのにかなりの時間を費やしています。これが私がやったことです。
次の構造の testing/ ディレクトリを作成しました。
testing/
|
+-- package.json
|
+-- README.md
|
+-- test/
|
+-- mocha.opts
|
+-- widgets/
|
+--mywidget/
|
+-- test.js
関連する各ファイルの内容は次のとおりです。
パッケージ.json:
{
"name":"testing-project",
"version":"2.5.0",
"description":"Testing Project",
"keywords":["test"],
"engines": { "node": ">= 0.7.0 < 0.11.0" },
"scripts" : {
"test": "./node_modules/.bin/mocha"
},
"devDependencies": {
"mocha": ">= 1.18.2",
"requirejs": ">= 2.1.11",
"should": ">= 3.2.0",
"expect.js": ">= 0.3.1"
}
}
テスト/mocha.opts:
--require expect.js
--require should
--require requirejs
--require mocha
--reporter spec
--ui tdd
--recursive
--growl
テスト/ウィジェット/mywidget/test.js
'use strict';
var requirejs = require('requirejs');
// Also tried with: require('../../../r.js') which I downloaded from RequireJS' site
requirejs.config({
baseUrl: '../../../../',
nodeRequire: require
});
console.log('before require');
requirejs(['mywidget/trunk/src/mywidgetfile.js'], function(myObj){
console.log('after require');
var expect = require('expect.js');
// Instead of the above "requirejs['mywidget..." line, I've also tried:
// var myObj = requirejs('mywidget/trunk/src/mywidgetfile.js'); AND:
// var myObj = requirejs('../../../../mywidget/trunk/src/mywidgetfile.js');
describe('My Widget', function(){
describe('my-widget#getInfo', function(){
it('should pass this test', function(done){
expect( myObj.returnString('test') ).to.equal( 'test' );
done();
})
})
});
});
console.log('done');
「require の前」と「done」のコンソール行を出力しますが、requirejs(['mywidget... 行が含まれている限り、require の後にヒットしません。requirejs 行 (および対応する閉じ括弧/括弧行)、代わりに直接の「var myObj =" 行を使用すると、「モジュールが見つかりません」というメッセージが表示され、2 番目の「var myObj」行を使用すると、「参照エラー: 定義が定義されていません」というメッセージが表示されます。 "。
他の開発者の利便性のために、これをすべて npm でパッケージ化し、最上位の「testing/」ディレクトリ内から「npm test」コマンドを実行しようとしています。
私は答えを探し求めて多くのことを試してきましたが、RequireJS を使用してファイルを要求し、「define()」を定義しているようには見えません。テストを実行できますが、それは問題ではありません...問題が発生し始めたときのミックスにRequireJSを挿入しようとしているだけです。
どんな助けでも途方もないでしょう!
ありがとうございました!