2017-12-06 12 views
0

夜間監視との統合テストを行います。いくつかのUIオートメーションは正常に動作します。最後に、UI操作の結果が正しい場合、Rest APIを使用してチェックしたいと思います。私はチャイが夜明けに入っているのでチャイを使ってみる。箱の夜間監視はexpect.element( '#element')...のみをサポートしていますが、私はexpect(true).to.be.trueスタイルが必要です。nightwatch.jsテストでchaiのexpectを使用する方法

これは私のテストファイルの(一部)である:

const { expect } = require('chai'); 

module.exports = { 
    'Add Rules (Tester 1)' : browser => { 
     ... some tests 
    } 
    after: browser => { 
     let username = 'username'; 
     let password = 'xxxxxxxx'; 

     fetchRulesFromJira({ browser, username, password }).then(rules => { 
      expect(rules.length).to.equal(2); 
      browser.end(); 
     }); 
    } 
}; 

期待が出力さ

(node:3594) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): AssertionError: expected 3 to equal 2

どういうわけか便利が、素敵ではありません失敗した場合。テストが成功すると、出力はありません。

nightwatch.jsで結果を出力する方法や、テスト結果を標準出力にする方法はありますか?

+0

約束を返すべきです: 'return fetchRulesFromJira({ブラウザ、ユーザ名、パスワード})。then(....);' – Troopers

+0

それは残念なことにそれをしません。 – Michael

答えて

0

アサーションが単なる要素以上に使用できるのであれば、私は同意します。私がこれを代わりに使用する回避策はbrowser.verify.ok()です。次にテストが実際に行っていることを説明するメッセージを追加するだけで、結果を見るとどのようなテストかを確認できるようになります。私は上記のアプローチは、あなたの約束の拒絶反応を処理するとは思わない、が

Passed [ok]: there are 2 rules 

:あなたはこのようなメッセージが表示されますコンソールで

browser.verify.ok(rules.length === 2, 'there are 2 rules'); 

:あなたのケースでは、このようなものになるだろう全く問題はない。 thenの後ろにcatchを置くだけで問題が解決します。これは拒否された約束を処理する正しい方法です。

fetchRulesFromJira({ browser, username, password }).then(rules => { 
     expect(rules.length).to.equal(2); 
     browser.end(); 
    }) 
    .catch(err => { 
     browser.assert.fail(err); 
    }); 

また、あなたのコードをもう一度見て、私は言及する最後のものがあります。 afterメソッドでアサーションを実行しようとしています。これは、すべてのテストが完了した後に実行されます。通常、何らかの種類のクリーンアップまたはティアダウンにはafter関数を使用します。私はまだ夜間監視の新人ですが、そこにアサーションを入れるのがベストプラクティスではないと思います。また、私は彼らがbefore[Each]またはafter[Each]の機能でも働いているかどうかは十分にはわかりません。そのアサーションをテスト関数の中に置くと、コンソールに出力が表示されるはずです。

0

私の現在の解決策は、try/catchにexpectをカプセル化し、nightwatchでエラーを呼び出すことではありません。

const { expect } = require('chai'); 

module.exports = { 
    'Add Rules (Tester 1)' : browser => { 
     ... some tests 
    } 
    after: browser => { 
     let username = 'username'; 
     let password = 'xxxxxxxx'; 

     fetchRulesFromJira({ browser, username, password }).then(rules => { 
      try { 
       expect(rules.length).to.equal(2); 
      } catch(error) { 
       browser.assert.fail(error); 
      } 

      browser.end(); 
     }); 
    } 
}; 

これは完璧に見えませんが、出力は大丈夫です。

関連する問題