1

そのため、Mongoose プロジェクトのチュートリアル、TDD スタイル、各ステップが達成するはずのテストを作成し、実際のチュートリアルに従うなどして、Jasmine (ノード用) を独学しようとしています。

もちろん、私の最初のテストは失敗しています。

この時点での app.js は次の 2 行です。

var mongoose = require('mongoose');
console.log(mongoose.version);

これはうまくいきます。ただし、私のテストはまだ失敗します。

var app = require('../src/app.js');

describe('App startup', function() {
    it('loads mongoose', function() {
            expect(app.mongoose.version).toBeDefined();
    });
    it('loads jasmine-jquery', function() {
            expect($).toBeDefined();
    });
});

結果は

Failures:

1) App startup loads mongoose
Message:
 TypeError: Cannot read property 'version' of undefined
Stacktrace:
 TypeError: Cannot read property 'version' of undefined
at null.<anonymous> (/home/jbhelfrich/mongooseBlog/spec/init.spec.js:5:36)

(もちろん、jquery テストは、この時点でまだ失敗することが予想されます。) 「アプリ」を使用して、または使用せずに試してみました。期待句で、しかし同じエラーが発生します-テストスイートはapp.jsの内部を認識しません。しかし、app.js ファイルが正しく読み込まれていることはわかっています。これは、実行されているためです。console.log の出力は、テスト結果の前に表示されます。

したがって、スコープに関する基本的なこと、またはその他の初歩的な間違いを誤解していると思われますが、それが何であるかはわかりません。

4

1 に答える 1

0

Node.js はモジュールに構造化されています。モジュールのプロパティにアクセスできるようにする場合は、そのモジュールのプロパティをmodule.exports変数で定義する必要があります。これはエクスポートがどのように見えるかです (exports参照に注意してくださいmodule.exports):

var mongoose = require('mongoose');
console.log(mongoose.version);
exports.mongoose = mongoose;

次に、require()上記のコードを使用してファイルを使用すると、変数が設定されます。ここで、ロードされているモジュールとapp同等です。module.exports

var app = require('../src/app.js');
console.log(app.mongoose.version);
于 2013-10-07T02:20:12.593 に答える