2017-01-18 6 views
0

私は、Mochaを使用して、AMDモジュールとしてエクスポートされたコードをテストしています。モカテストを実行すると、次のエラーが表示されます。AMDモジュールをMochaテストにインポートする

ReferenceError: define is not defined 
at Object.<anonymous> (/home/malintha/projects/...../xxx.js:1:63) 
at Module._compile (module.js:571:32) 
at Object.Module._extensions..js (module.js:580:10) 
at Module.load (module.js:488:32) 
at tryModuleLoad (module.js:447:12) 
at Function.Module._load (module.js:439:3) 
at Module.require (module.js:498:17) 
at require (internal/module.js:20:19) 

define(['lodash', 'log', './yyy'], function(_, log, YYY) { 

var xxxy = function() { 

}; 

.............. 
}); 

をfloowsとしてテストされ、ソースとモカテスト私はこの問題を解決するにはどうすればよい

var expect = require("chai").expect; 
var sourceGenVisitor = require("../../xxx") 

describe("", function() { 
describe("", function() { 
    it("Checks generated source", function() { 
    ................... 
    }); 
    }); 
}); 

+0

理想的には、テスト対象のモジュールは、AMDとCommonJSの両方をサポートする必要があります。そうすれば、ノードでAMDをどのようにサポートするのか不思議に思う必要はありません。 –

答えて

1

amd-loaderを使用できます。私はのためにそれをAMDモジュールのコレクションとして構成された私のプロジェクトで使用しました。インストール先:

`npm install amd-loader` 

AMDモジュールの前にロードする必要があります。一般的には、

require("amd-loader"); 

の場合、引数は--require amd-loaderです。繰り返し入力したくない場合は、test/mocha.optsファイルに書き込むことができます。

+0

は、今私は ":;:モジュールのlodash」を見つけることができません^ エラー472 スローERR module.js" を取得しています。私はロダシュをインストールして、モカのテストでそれを要求するが、まだ私にエラーを与えている。 – Malintha

+0

ここであなたの質問には 'node.js'というタグが付けられていますので、Nodeで動作する答えを教えてください。私はあなたがブラウザを使って別の質問を書いたのを見ます。ブラウザを使用している場合、最も簡単な方法は、その質問で行っていることを示すようにRequireJSを使用することです。 – Louis

0

タイプコピーでmocha testを実行する場合。たぶん、あなたはこれを行う:

npm install amd-loader --save 
  • 実行モカテスト:

    1. は、AMD-ローダーのインストール

      mocha src/**/*test.ts --require ts-node/register -r amd-loader 
      
  • 関連する問題