2016-09-15 7 views
2

ビジュアルスタジオ2015のノードjsツールを使用しています。私のローカル環境でjavascriptとjqueryのmochaテストを作成しています。カルマとクロムを使ってテストを実行しています。すべてうまくいきましたが何らかの理由でjsdomを使用してkarmaやブラウザを使わずにノードjからテストを実行したいのですが、jqueryプラグインの1つは内部的にOption(new Option)のインスタンスを実行し、jsdom私は参照エラーを取得オプションはカルマから定義されていません私はエラーが表示されない明らかなカルマは、オプションが定義され、jsdomは実際のブラウザではない実際のブラウザを使用しているようだ、作業? jsdomによるテストのデバッグjsdomによって作成されたウィンドウオブジェクトにHTMLOptionElementが添付されていることがわかりますが、インタフェースが完全に実装されていない可能性があります。jsdom - mochaテストを実行しているときにオプションが定義されていません

ReferenceError: Option is not defined 

はありがとうござい

:私は取得していますエラーがある。ここ

は、テストファイルのコードが

if (global.window) { 
    window.jQuery = window.$ = require('jquery'); 
} else { 
    require('jsdom-global')(); 
    global.jQuery = global.$ = require("jquery"); 
} 

var chai = require('chai'); 
var assert = chai.assert; 
var expect = chai.expect; 
var should = chai.should(); 

chai.use(require('chai-jquery')); 
chai.use(require('chai-spies')); 

var sourceFile = require('path_to_js_file'); 

describe('Test',() => { 
    it('this is not passing',() => { 
     var x = new Option; 

     expect(1).to.equal(1); 
    }); 

    it('this is passing',() => { 
     document.body.innerHTML = '<input id="name"/>'; 

     sourceFile.init(); 

     expect($("#name").is(":focus")).to.equal(true); 
    }); 
}); 

で、私のソースファイルは、この

function init() { 
    $('#name').focus(); 
} 

module.exports = { 
    init 
}; 

のように見えます

答えて

0

ruこの同じ問題に取り組んで、Optionコンストラクタが実際にはjsdomに実装されていないことに気付きました(あなたが疑うように)。 issue #1759 on GitHubを参照してください。私はsubmitted a PR that fixes this issueです。

この執筆時点では、PRはまだマージされていませんが、このコメントはアップストリームでマージされた後に更新されます。

0

同じ問題が発生しました。 jsdomから直接ウィンドウを割り当てると、Optionのコンストラクターがウィンドウから利用可能であることがわかりました。 9.12.0

:私はjsdomの最新の実装を使用してい

var jsdom = require('jsdom'); 
global.document = jsdom.jsdom(undefined); 
global.window = document.defaultView; 
global.Option = window.Option; 

:以下は、Optionコンストラクタ(ただし、私はそれが回避策です認めざるを得ない)にアクセスできるようにするコードです

関連する問題