2017-11-11 7 views
0

現在、npmモジュールを開発し、最初のものを開発しようとしています。私はブラウザに(スクリプトタグを付けて)それを含めることができるようにしたいと思います。また、npm installを介して利用できるようにしたいと思います。また、htmlページを開いてブラウザにコードが含まれていて、ノード経由でテストを実行しています(たとえば、npm run testなど)。DOM要素を必要とするnpmモジュールをテストする方法

基本的に、私のライブラリのプロットのx、私は好き、それを使用するように、キャンバスのIDに基づいて、キャンバス上のyグラフ:

var g1 = new Plotter('canvas1'); 
g1.plot([[x1, y1], [x2, y2], [x3, y3]]; 

だから私のプロッタコンストラクタはこの

constructor(idElement) { 
    this.canvas = root.document.getElementById(idElement); 
    this.ctx = this.canvas.getContext('2d'); 
    this.origin = { 
     x: this.canvas.width/2, 
     y: this.canvas.height/2 
    }; 
} 
のように見えます

ブラウザでうまく動作しますが、モカ、チャイ、AVA、ジャスミンを試してみると、テストを実行する方法を理解できませんでした。それは常にの結果は、未定義のプロパティgetElementByIdを見つけることができません。ここに私のコンストラクタテストは次のとおりです。

it('Constructor test', function() { 
     const window = new Window(); 
     const canvas = window.document.createElement('canvas'); 
     canvas.setAttribute('id', 'canvas1'); 
     const g1 = new Plotter('canvas1'); 
     g1.plot([0,0],[40,5]); 
     expect(canvas.id).to.equal('graphique'); 
    }); 

あなたは私がこれを行うことになったり、全くあれば、それはNPMモジュールでgetElementByIdをを使用することをお勧めがあるのですか方法を知っていますか?代わりにコンストラクタの引数としてキャンバスの幅と高さを受け取るだけですか?

あなたはより多くの情報が必要なら、私に教えてください

は、備品用ループ

答えて

0

Youreのご清聴ありがとうございました、コードのlitlle枚ということができ、テストのための(一時的な)モック/スタブHTML。あなたはjasmine-jqueryのようなライブラリを使うことができます(もしあなたがusibg jqueryでなくても)。

DOM操作用のNPMモジュール(bem.js)を作成し、このメソッドを使用してテストします。参照として使用することができます。

+0

こんにちはSvenさん、ブラウザでbem.jsを使用できますか? (スクリプトタグ付き)。しかし、はい、ジャスミンjqueryは仕事をすることができます、私はあなたのコードにもっと深く見て、私がやろうとしているものとそれを合わせることができます参照してください –

0

ノードあなたがノードでキャンバスライブラリをテストすることができなくなりますので、DOMやウィンドウオブジェクトを持たない、

NW.jsは、Node.jsのすべての機能をウェブキットブラウザを組み合わせて、あなたに合うことニーズ。

+0

ありがとうtraktor53、私はNW.jsに見ていきます! –

関連する問題