0

私はcodeceptJSは初めてですが、yieldでは機能しないことがわかります。

'use strict';
Feature('Testing Begins');
Before((I) => {
  I.resizeWindow(1500, 1000);
  I.amOnPage('http://absolutenet.com');
});

Scenario('ANI testing', function*(I){
  I.waitForText('bring your site to life');
  I.amOnPage('http://www.absolutenet.com/');
  let title = yield I.grabTitle();
  console.info(title);
  I.see('bogus text that is not there');
});

いくつかのグラブ コマンドと executeScript を試しました。なんらかの理由で、yield の後に 1 つまたは 2 つの行が実行され、割り当てている変数を出力できるため、コマンドが機能していることはわかっています。しかし、ブラウザが閉じてスクリプトが終了するため、決して使用できません。さらに悪いことに、明らかに無効なテスト (I.see('some bogus non existent text');) を入れることができ、シナリオは成功して終了します!

上記はライブなので、実行して問題を確認できます。問題がある場合は、Linux と FireFox でテストします。

yield を使用してテストを続行する方法の例を誰か教えてもらえますか?

更新: 開発者は、これはバグであり、すぐに修正されると述べています。

4

1 に答える 1

2

CodeceptJS の readme に次のように記載されています。

CodeceptJS を使用すると、シナリオ駆動型の機能テストと受け入れテストが可能な限りシンプルかつクリーンになります。NodeJS の非同期性や、Selenium、PhantomJS、Protractor などのさまざまな API について心配する必要はありません。CodeceptJS がそれらを統合し、同期のように機能させるからです。

したがって、テストを実行するためにyieldは必要ありません。CodeceptJS は、これらの非同期タスクを処理する WebdriverIO のラッパーです。次のことができるはずです。

Scenario('ANI testing', function*(I){
  I.waitForText('bring your site to life');
  I.amOnPage('http://www.absolutenet.com/');
  I.seeInTitle('my page title');
});

http://codecept.io/basics/

ただし、質問にもっと徹底的に答えようとするために、codeceptJS にはジェネレーターを使用するための優れた例があります。

Scenario('use page title', function*(I) {
  // ...
  var password = yield I.grabTextFrom('#password');
  I.fillField('password', password);
});

http://codecept.io/acceptance/

于 2016-01-13T00:12:34.610 に答える