📜  JasmineJS-异常检查(1)

📅  最后修改于: 2023-12-03 15:15:54.423000             🧑  作者: Mango

JasmineJS 异常检查

JasmineJS 是一个优秀的 JavaScript 测试框架,提供了丰富的 API 用来编写测试用例。在编写测试用例的过程中,我们可能需要验证代码是否会抛出异常。这时候,JasmineJS 提供了一些工具函数可以方便我们进行异常检查。

toThrow()toThrowError()

toThrow()toThrowError() 都是用来检查代码是否会抛出异常的函数。两者的区别在于,toThrowError() 可以精确地检查抛出的异常类型,而 toThrow() 只能简单地检查是否有异常抛出,无法精确检查异常类型。

toThrow()

toThrow() 可以接收一个参数,用于检查异常的描述信息。如果代码中没有抛出异常,则测试用例会失败。

it('should throw an error with specific message', () => {
  const obj = {};
  expect(() => obj.test()).toThrow('obj.test is not a function');
});

上面的测试用例测试了一个没有定义 test 方法的对象调用 test 方法是否会抛出异常,并检查异常的描述信息是否为 'obj.test is not a function'

toThrowError()

toThrowError() 可以接收一个参数,用于精确检查抛出的异常类型。如果代码中抛出的异常类型与参数不匹配,则测试用例会失败。

it('should throw a TypeError', () => {
  const notAFunction = 'string';
  expect(() => notAFunction()).toThrowError(TypeError);
});

上面的测试用例测试了一个字符串类型的变量调用方法是否会抛出 TypeError 异常。

catch() 函数

如果在测试用例中直接调用代码,而不是通过 expect 函数调用,可以使用 catch() 函数来捕获异常,然后进行检查。

it('should throw a RangeError', () => {
  const arr = [];
  const index = 10;
  try {
    arr[index] = 1;
  } catch (e) {
    expect(e).toBeInstanceOf(RangeError);
  }
});

上面的测试用例测试了在一个空数组中赋值超出索引范围的值是否会抛出 RangeError 异常,并捕获异常。

以上就是 JasmineJS 中异常检查的相关内容。通过这些工具函数,我们可以方便地检查代码是否会抛出异常,确保代码的稳定性和健壮性。