web-dev-qa-db-ja.com

Chai.jsでテストに失敗する

JUnitでは、以下を実行することでテストに失敗できます。

fail("Exception not thrown");

Chai.jsを使用して同じことを達成する最良の方法は何ですか?

22
Sionnach733

@DmytroShevchenkoが言及したassert.fail()のように、失敗を偽装する方法は多数ありますが、通常、これらの松葉杖を避けて、より良い方法でテストの意図を表現することができます。テストが失敗した場合のより意味のあるメッセージ。

たとえば、例外がスローされると予想される場合、直接そう言わないでください:

expect( function () {
    // do stuff here which you expect to throw an exception
} ).to.throw( Error );

ご覧のとおり、例外をテストするときは、コードを匿名関数でラップする必要があります。

もちろん、より具体的なエラータイプ、予想されるエラーメッセージなどを確認することで、テストを改良できます。.throwの-​​ Chai docs その他.

25
hashchange

assert.fail() があります。次のように使用できます。

assert.fail(0, 1, 'Exception not thrown');
51

私はまた、ここに直接fail(msg)がないことを発見しました。しばらくの間、私は...

assert.isOk(false, 'timeOut must throw')

(到達できないはずの場所、つまり約束テストでこれを使用する...)

Chaiは標準のES6エラーと互換性があるため、これは機能します。

throw new Error('timeOut must throw') 

…または、 アサート自体は本質的にassert.isOKと同じ ...なので、私のお気に入りは:

assert(false,'timeOut must throw')

…まあ、assert.fail(…

2
Frank Nocke

ちょうど試して

expect.fail("custom error message");

または

should.fail("custom error message");

chai docsに記述されているとおり: https://www.chaijs.com/api/bdd/#method_fail

1
Nigrimmist

私はこうしました

const expect = require('chai').expect;
const exists = true;
expect(!exists).to.throw('Unknown request type');
0
Hemadri Dasari