JUnitでは、以下を実行することでテストに失敗できます。
fail("Exception not thrown");
Chai.jsを使用して同じことを達成する最良の方法は何ですか?
@DmytroShevchenkoが言及したassert.fail()
のように、失敗を偽装する方法は多数ありますが、通常、これらの松葉杖を避けて、より良い方法でテストの意図を表現することができます。テストが失敗した場合のより意味のあるメッセージ。
たとえば、例外がスローされると予想される場合、直接そう言わないでください:
expect( function () {
// do stuff here which you expect to throw an exception
} ).to.throw( Error );
ご覧のとおり、例外をテストするときは、コードを匿名関数でラップする必要があります。
もちろん、より具体的なエラータイプ、予想されるエラーメッセージなどを確認することで、テストを改良できます。.throw
の- Chai docs その他.
assert.fail()
があります。次のように使用できます。
assert.fail(0, 1, 'Exception not thrown');
私はまた、ここに直接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(…
。
ちょうど試して
expect.fail("custom error message");
または
should.fail("custom error message");
chai docsに記述されているとおり: https://www.chaijs.com/api/bdd/#method_fail
私はこうしました
const expect = require('chai').expect;
const exists = true;
expect(!exists).to.throw('Unknown request type');