2017-04-11 9 views
0

適切な資格情報なしで私のメソッドが不正なエラーを発することをテストしたい。私はチャイとどうやってこれをやりますか?私はチャイの例はチャイによる流星のエラーを予想する方法

var err = new ReferenceError('This is a bad function.'); 
var fn = function() { throw err; } 
expect(fn).to.throw(ReferenceError); 
expect(fn).to.throw(Error); 
expect(fn).to.throw(/bad function/); 
expect(fn).to.not.throw('good function'); 
expect(fn).to.throw(ReferenceError, /bad function/); 
expect(fn).to.throw(err); 

だから私は

let error = new Meteor.Error(UNAUTHORIZED, UNAUTHORIZED_REASON, 'detail'); 
chai.expect(Meteor.call('addItem', item)).to.throw(error); 

を試みたが、これは動作しませんでしたしていることがわかります。思考?

答えて

2

あなたは、このようにそれを行うことができます使用してそのエラーの

throw new Meteor.Error('unauthorised', 'You cannot do this.'); 

がテスト:

は次のエラーをスローするメソッドを持っていると言います

it('will throw an error', function() { 
    assert.throws(() => { 

     //whatever you want to run that should throw the error goes here 

    }, Meteor.Error, /unauthorised/); //change 'unauthorised' to whatever your error is 
}); 
2

そのexpect(fn).to.throw(Meteor.Error);

it('Test Meteor Error',() => { 
    expect(() => { throw new Meteor.Error('test');}).to.throw(Meteor.Error); 
    }); 
+0

良いアイデア...しかしそれどちらもうまくいきませんでした:( – Simon

+0

私のために働きます。あなたの関数がネイティブErrorではなくMeteor.Errorを投げていると仮定します。私は使用例で答えを更新しました。ありがとう。 – Saleel

+0

ありがとう。私の問題は、私は関数定義で私の呼び出しを囲まなかったということでした。 – Simon

関連する問題