2017-01-18 4 views
0

エラーをスロー非同期機能のためのテストを書きますか?この作品

const err = new exceptions.InvalidCredentialsError(''); 
const fn = async function() { throw err; }; 
expect(fn).to.throw(err); 

上記は機能しません。

+0

whats npmあなたはテストに使用していますか? – IzumiSy

答えて

0

asyncで定義された関数は、呼び出されるとPromiseを返します。あなたの機能をテストするために使用できるChai as Promisedと呼ばれるチャイのためのプラグインがあります。

npmから約束通りチャイをインストールします。

$ npm install chai-as-promised --save-dev 

はチャイにそれをプラグイン:

var chai = require('chai'); 
var chaiAsPromised = require('chai-as-promised'); 
chai.use(chaiAsPromised); 
var expect = chai.expect; 

その後、あなたの非同期機能のためのテストを書きます。テスト環境が許す場合は、テスト(モカのような)からPromiseを返すために、その後、次の操作を行います。テスト環境は、あなたがPromiseを返させていない場合は

const err = new exceptions.InvalidCredentialsError(''); 
const fn = async function() { throw err; }; 
return expect(fn()).to.be.rejectedWith(err); 

、代わりにこれを行う:

const err = new exceptions.InvalidCredentialsError(''); 
const fn = async function() { throw err; }; 
expect(fn()).to.be.rejectedWith(err).notify(done); // where `done` is the callback 

関数の戻り値(Promise)は、関数自体ではなくexpect()に渡されることに注意してください。

関連する問題