2017-07-25 8 views
0

私は小さな質問をしています。私は作成した関数をテストしようとしています(私はTypescriptで書かれています)、私はmocha/chai/jsdomを使用しています。さて、ドキュメント内で 'ドキュメント'を使って関数をテストしているときにエラーが発生しました。 'ReferenceError:ドキュメントが定義されていません'というメッセージが表示されます。これらの関数を 'document'でテストするにはどうしたらいいですか?例えばjsdomを使用して 'document'関数をテストする方法

[prompt.spec.ts]

import { expect } from 'chai' 
import { JSDOM } from 'jsdom' 
import { functionX } from './functions' 

describe('Functions',() => { 
    it('is possible to execute functionX with simple parameters',() => { 
    const jsdom = new JSDOM() 
    const htmlElement = jsdom.window.document.createElement('div') 
    expect(functionX(htmlElement, function() { return true; })).to.equal(true) 
    }) 
}) 

[functions.ts]

export const functionX = (
    body:HTMLElement, callback: (ok: boolean) => void 
) => { 
    const doc = body.ownerDocument 
    const parent = doc.body 

    // ... 

    let container = document.querySelector('.container') as HTMLDivElement // ReferenceError: document is not defined 

} 
+0

doc.querySelectorにする必要がありますか?本文からdocを定義した場所がわかりますが、グローバルであってもどこにでも定義されたドキュメントは表示されません。 – veratti

答えて

2

ます場合は、世界的にあなたのテストにJSDOMのドキュメントを利用できるようにすることができますそれを事前に準備する。

import { JSDOM } from 'jsdom'; 
const { window } = new JSDOM('<!doctype html><html><body></body></html>'); 

// Save these two objects in the global space so that libraries/tests 
// can hook into them, using the above doc definition. 
global.document = window.document; 
global.window = window; 

これを別のファイルに書き込んで、このファイルを仕様ファイルの直前のモカのパラメータとして追加します。次のようなもの:

_mocha Specs/_setup.js Specs/*.js 
関連する問題