2017-09-04 42 views
3

私は関数によって投げられた例外の型をテストする必要があるいくつかのコードで作業しています(TypeError、ReferenceErrorなど)。Jestで投げられた例外の型をテストするには

私の現在のテストフレームワークは、AVAと私はここのように、第二引数t.throws方法としてそれをテストすることができます。

it('should throw Error with message \'UNKNOWN ERROR\' when no params were passed', (t) => { 
    const error = t.throws(() => { 
    throwError(); 
    }, TypeError); 

    t.is(error.message, 'UNKNOWN ERROR'); 
}); 

私は冗談に私のテストを書き換え開始し、簡単にそれを行う方法を見つけることができませんでした。それも可能ですか?

答えて

2

自分で試したことはありませんが、JestのtoThrowアサーションを使用することをおすすめします。だから私はあなたの例では、このようになります推測:

it('should throw Error with message \'UNKNOWN ERROR\' when no params were passed', (t) => { 
    const error = t.throws(() => { 
    throwError(); 
    }, TypeError); 

    expect(t).toThrowError('UNKNOWN ERROR'); 
    //or 
    expect(t).toThrowError(TypeError); 
}); 

ここでも、それをテストが、私はそれが動作するはずだと思うしていません。

これが役立ったかどうか教えてください。

ハッピーコーディング!

2

Jestには、呼び出されたときに関数がスローすることをテストするメソッドtoThrow(error)があります。

だから、あなたのケースでは、あなたはそれを呼び出す必要があります:冗談で

expect(t).toThrowError(TypeError); 

The docs

2

は、あなたが期待する(機能).toThrow(空白またはエラーの種類)に関数を渡す必要があります。

例:あなたはそれが引数のセットをスローするかどうか、既存の機能をテストする必要がある場合は

test("Test description",() => { 
    const t =() => { 
    throw new TypeError(); 
    }; 
    expect(t).toThrow(TypeError); 
}); 

は、あなたが期待して匿名関数の内部でそれをラップする必要があります()。

例:

test("Test description",() => { 
    expect(() => {http.get(yourUrl, yourCallbackFn)}).toThrow(TypeError); 
}); 
関連する問題