JavaScript
jasmine

Jasmineで可変エラーメッセージを掴むには

jasmineは可変エラーメッセージに対応してない

公式ドキュメントより

it("The 'toThrowError' matcher is for testing a specific thrown exception", function() {
    var foo = function() {
      throw new TypeError("foo bar baz");
    };

    expect(foo).toThrowError("foo bar baz");
    expect(foo).toThrowError(/bar/);
    expect(foo).toThrowError(TypeError);
    expect(foo).toThrowError(TypeError, "foo bar baz");
  });

上記のように関数ポインタを渡す必要があるので以下のような関数をテストする際に困る。

testFunction(hoge) {
  if (condition) throw new Error(`Error Message ${hoge} !`);
}

解決方法

こちら参照

無名関数で囲んでやれば関数ポインタ渡すことになるよね?ということらしい。
なので、以下のようにテストすればいい。

it('適切なエラーが投げられていること', () => {
  expect(() => {testFunction('たまげた')}).toThrowError('Error Message たまげた !');
});

以上!!