12

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を挿入しようとしているだけです。

どんな助けでも途方もないでしょう!

ありがとうございました!

4

1 に答える 1