0

TapeアサーションとNightmare.jsを使用して ES6 コードをテストし、テスト ページをロードしようとしています。私はさまざまな ES6 メソッドを試し続けています: async/await、yield、generators などです。また、いつ、いつbabel-tapeを使用しないのかもわかりません。次のテストに合格することはできますが、別の評価ブロックを作成するとエラーになります。ドキュメントはかなり不足しています (または Mocha を使用しています)。ここでのベストプラクティスは何ですか?

import {test} from "tape";
import {default as nightmare} from "nightmare";

const page = nightmare().goto("http://localhost:4000/index.html");

page.evaluate(() => document.getElementsByTagName("body").length).end()
  .then((result) => {
    test("detect page body", (assert) => {
      assert.equal(1, result);
      assert.end();
    });
  });

ps。テストを実行するためにbabel-tape-runnerを使用しています。

4

1 に答える 1

1

次のテストに合格することはできますが、別の評価ブロックを作成するとエラーになります。

うーん、あなたは.end()ナイトメア インスタンスを呼び出しています。そのインスタンスが終了したら、そのインスタンスと対話するべきではありません。おそらく、いくつかの問題が発生している可能性があります。

ドキュメントはかなり不足しています(またはMochaを使用しています)

ナイトメアのテスト スイートを見ると、describeブロックにはbeforeEachとがありafterEach、それぞれナイトメア インスタンスをセットアップまたは破棄します。あなたのテスト (少なくとも私の読みでは) は、すべてのテストに対して単一のナイトメア インスタンスを設定し、望ましくない動作につながる可能性があります。


そうは言っても、Nightmare の内部宣言と使用法をテストに移動してみてください。カフから、次のようなもの:

import {test} from "tape";
import {default as Nightmare} from "nightmare";

test('detect page body', (assert) => {
 var nightmare = Nightmare();
 nightmare
    .goto("http://localhost:4000/index.html")
    .evaluate(() => document.getElementsByTagName("body").length)
    .then((result) => {
      assert.equal(1, result);
      nightmare.end(()=>{
        assert.end();
      });
    });
});
于 2016-02-29T17:31:56.510 に答える