5

私はとをアサーションとして使用mochaしています。chai

私の仕様にはいくつかのアサーションがあります:

Exp1.should.be.true
Exp2.should.be.true
Exp3.should.be.true

それらの1つが失敗した場合、モカは「falseがtrueであると予想されます」と書き込みます。それらを識別する方法はありますか?

expect私はそれを行うことができます:

expect(Exp1, 'Exp1').to.be true

このようなことは可能shouldですか?

4

3 に答える 3

5

どうやらshould現時点ではカスタムエラーメッセージをサポートしていません。

メッセージを設定するための独自のヘルパーを作成できます。

var chai = require('chai'),
    should = chai.should();

// Helper definition - should be in a shared file
chai.use(function(_chai, utils) {
  _chai.Assertion.addMethod('withMessage', function(msg) {
    utils.flag(this, 'message', msg);
  });
});

// Sample usage
it('should fail', function() {
  var Exp1 = false;
  var Exp2 = false;
  Exp1.should.be.withMessage('Exp1').true;
  Exp1.should.withMessage('Exp2').be.true;
});
于 2013-06-17T09:14:42.563 に答える
2

チャイコードをshouldに関してチェックしたところ、現在受け入れられている答えが正しくないか、不完全であることがわかりました。

そこで読むと、各アサーションに独自のカスタムメッセージを含める方法があることがわかります。should問題は、代わりにの関数呼び出しを使用するようにアサーション構文を変更する必要があるかもしれないということです。

(1).should.equal(0, 'This should fail');
/****** Output with (I believe) default reporter *****
 * This should fail
 * + expected - actual
 *
 *  -1
 *  +0
 */

独自のレポーターを使用している場合は、出力が異なる場合があることに注意してください。気になる場合は、shouldの関数をラップして、アサーション出力に常に行番号を含めることができます。

于 2017-04-25T16:48:45.390 に答える
0

なぜ彼らはどの行がアサーションを起動したのかを単純に追加しないのだろうかと思いますが、私はこれとまったく同じ問題に自分で遭遇しました。私が指摘したよりも優れたマニュアルを作成できる同僚は、includeStackアサーションの行番号を指定する設定があります。 http://chaijs.com/guide/styles/#configure

私は多くの非同期を実行しているので、beforeまたはでテストを実行してから、アサーションごとbeforeEachに個別に実行する場合があります。it

于 2015-07-15T22:49:39.967 に答える