2017-09-27 6 views
0

私はindex.htmlファイルに 'Hello world! H1で "テキスト:私はすべてを保存して、このようにそれを実行しJavaScript + Mocha + Chai。私のテストはいつも通り過ぎますか?

import {expect} from 'chai'; 
import jsdom from 'jsdom'; 
import fs from 'fs'; 

describe('index.html',() => { 
    it("should say 'Hello world!'",() => { 
     // read file content to variable 
     const index = fs.readFileSync('./src/index.html', "utf-8"); 

     // pass this variable to jsdom: 
     jsdom.env(index, function(err, window) { 
      const h1 = window.document.getElementByTagName('h1')[0]; // read our h1 
      expect(h1.innerHTML).to.equal("Helloooooooo World!");  //<---- passed 
      done(); 
      window.close(); 
     }); 
    }) 
}) 

:ここ

<!DOCTYPE HTML> 
<html> 
<head> 
    <title></title> 
<meta charset="UTF-8"> 
</head> 

<body> 
    <h1>Hello world!</h1> 
    <script src="bundle.js"></script> 
</body> 
</html> 

とは私のindex.test.jsある

"test": "mocha --reporter progress buildScripts/testSetup.js \"src/**/*.test.js\"" 

、それは常に報告します"合格"。

enter image description here

私もexpect文字列をコメントすることができ、そしてそれはあなたがitへの引数としてdone宣言する必要があまりにもオブジェクト指向

enter image description here

答えて

3

を渡します。それ以外の場合は、ちょうどあなたのexpect通話が途中で実行し、意志するので、それは待つことはありません、それシンクロテスト

見なし第一引数は、基本的にdoneが呼び出されるまで待機するモカを伝えることを宣言することで

it('Does x', (done) => { 
    someAsyncFunc((err, result) => { 
    done() 
    }) 
}) 

、単に時にコールバックを呼び出すMocha's docs

から成功し

としてテストを考えますあなたのテストは完了です。それにコールバック(通常はdoneという名前)を追加することで、Mochaはテストを完了するためにこの関数が呼び出されるまで待機する必要があることを認識します。

+0

ああ...ありがとうございました!今それは魅​​力のように動作します! +私はまた、 'getElement_s_ByTagName'があるはずです:) –

0

それは次のようになります。

it("should say 'Hello world!'", (done) => { 
+0

はい、そうです!ありがとうございました! –

関連する問題