命名空间:jasmine

jasmine

jasmine 全局的成员。

注意:asymmetricEqualityTesters 命名空间 的成员也可以通过 jasmine 全局访问,但由于 jsdoc 的限制,这里未列出这些成员。

成员

(static) DEFAULT_TIMEOUT_INTERVAL

Jasmine 将等待异步规范之前或之后函数完成的默认毫秒数。可以在个案基础上替换此默认值的方法是将时间限制作为第三个参数传递至 itbeforeEachafterEachbeforeAllafterAll。该值不得大于 setTimeout 支持的最大毫秒数,该值通常为 2147483647。

在调试测试时,你可能想要将其设置为一个较大的数字(或将一个较大的数字传递至上面提到的某项功能),以使 Jasmine 不会在你调试时移动到 after 函数或下一个规范。

  • 1.3.0
默认值
  • 5000

(static) MAX_PRETTY_PRINT_ARRAY_LENGTH

在漂亮打印对象时要显示的最大数组元素数。这还将限制为对象显示的键和值的数量。超过此数字的元素将呈省略号。.

  • 2.7.0
默认值
  • 50

(static) MAX_PRETTY_PRINT_CHARS

在漂亮打印对象时要显示的最大字符数。超过此数字的字符将呈省略号。

  • 2.9.0
默认值
  • 100

(static) MAX_PRETTY_PRINT_DEPTH

漂亮打印器将要打印到的最大对象深度。如果你有大型对象,可以将此设置为较低的值以加快漂亮打印速度。

  • 1.3.0
默认值
  • 8

方法

(static) addAsyncMatchers(matchers)

为当前的规范范围添加自定义的异步匹配器。

注意: 这只能在 beforeEachitbeforeAll 内调用。

参数
名称 类型 说明
matchers 对象

此对象中的项将成为新的异步匹配器名称。

  • 3.5.0
参见

(static) addCustomEqualityTester(tester)

为当前的规范范围添加自定义相等比较器。

注意: 这只能在 beforeEachitbeforeAll 内调用。

参数
名称 类型 说明
tester 函数

一个函数,它采用两个要比较的参数,如果知道如何比较它们,则返回truefalse比较结果,否则返回undefined

  • 2.0.0
参见

(static) addCustomObjectFormatter(formatter)

为当前的规范范围添加自定义的对象格式化程序。

注意: 这只能在 beforeEachitbeforeAll 内调用。

参数
名称 类型 说明
formatter 函数

一个函数,它采用要格式化的值,如果知道如何格式化它,则返回一个字符串,否则返回undefined

  • 3.6.0
参见

(static) addMatchers(matchers)

为当前的规范范围添加自定义匹配器。

注意: 这只能在 beforeEachitbeforeAll 内调用。

参数
名称 类型 说明
matchers 对象

此对象中的项将成为新的匹配器名称。

  • 2.0.0
参见

(static) addSpyStrategy(name, factory)

为当前的规范范围添加自定义的谍报策略。

注意: 这只能在 beforeEachitbeforeAll 内调用。

参数
名称 类型 说明
name 字符串

策略的名称(即从 and 调用时的名称)

factory 函数

工厂函数,用于返回要执行的计划。

  • 3.5.0

(static) clock() → {Clock}

获取当前引导的针对此 Jasmine 环境的模拟 {Clock}。

  • 2.0.0
返回
类型
Clock

(static) createSpy(nameopt, originalFnopt) → {Spy}

创建一个空 Spy 对象。这不会在任何地方安装,也不会在其后方有任何实现。

参数
名称 类型 属性 说明
name 字符串 <可选>

要给予该谍报的名称。这将显示在失败消息中。

originalFn 函数 <可选>

“真实”函数。在调用 mySpy.and.callThrough() 之后,这将用于对谍报进行后续调用。在大多数情况下都应该省略此参数。提供原始函数的通常方式是调用 spyOn,而不是 createSpy。

  • 1.3.0
返回
类型
Spy

(static) createSpyObj(baseNameopt, methodNames, propertyNamesopt) → {Object}

创建一个以多个 Spy 作为成员的对象。

参数
名称 类型 属性 说明
baseName 字符串 <可选>

对象中 spies 的基本名称。

methodNames Array.<String> | Object

要为其创建 spies 的方法名称数组,或者键为方法名称、值为 returnValue 的对象。

propertyNames Array.<String> | Object <可选>

要为其创建 spies 的属性名称数组,或者键为属性名称、值为 returnValue 的对象。

  • 1.3.0
返回
类型
对象

(static) debugLog(msg)

记录一条消息用于调试。如果规范失败,则跟踪消息将包含在传递给报告程序的 specDone 方法的 result 中。

此方法应仅在规范(包括任何关联的 beforeEach 或 afterEach 函数)正在运行时调用。

参数
名称 类型 说明
msg 字符串

要记录的消息

  • 4.0.0

(static) getEnv() → {Env}

获取当前启动的 Jasmine 环境。

  • 1.3.0
返回
类型
Env

(static) isSpy(putativeSpy) → {Boolean}

确定提供的函数是否为 Jasmine spy。

参数
名称 类型 说明
putativeSpy 函数

要检查的函数。

  • 2.0.0
返回
类型
布尔值

(static) setDefaultSpyStrategy(defaultStrategyFn)

设置当前规范作用域的默认 spy 策略。

注意: 这只能在 beforeEachitbeforeAll 内调用。

参数
名称 类型 说明
defaultStrategyFn 函数

分配策略的函数

示例
beforeEach(function() {
  jasmine.setDefaultSpyStrategy(and => and.returnValue(true));
});

(async, static) spyOnGlobalErrorsAsync(fn)

用 spy 替换 Jasmine 的全局错误处理。这可防止 Jasmine 将未捕获的异常和未处理的 Promise 拒绝视为规范失败,并且允许使用 spy 的 calls 属性 和相关的匹配器(如 toHaveBeenCalledWith)来检查它们。

安装 spy 后,spyOnGlobalErrorsAsync 会立即调用其参数,该参数必须是异步函数或返回 Promise 的函数。该 spy 将作为该回调的第一个参数传递。从回调返回的 Promise 得以解决时,将恢复正常的错误处理。

当 JavaScript 运行时报告未捕获的错误或未处理的拒绝时,spy 将使用一个参数调用,该参数代表 Jasmine 尽最大努力描述错误。此参数可以是任何类型,因为 JavaScript 允许将任何内容抛出或用作拒绝的 Promise 的原因,但最常见的是 Error 实例和字符串。

注意:JavaScript 运行时可能会异步传递未捕获的错误事件和未处理的拒绝事件,尤其是在浏览器中。如果事件发生在回调返回的 Promise 结算之后,即使基本错误之前发生了,它也不会被路由到侦听器。您有责任确保在您解决回调返回的 Promise 之前,所有您希望处理的错误/拒绝事件已发生。

您必须确保调用 spyOnGlobalErrorsAsyncit/beforeEach/等函数不会在 spyOnGlobalErrorsAsync 返回的 Promise 结算之后发出完成信号。通常的做法是通过 await 等待返回的 Promise。安装 it/beforeEach/等函数之后,在函数发出完成信号之前继续安装全局错误侦听器可能导致问题,并且不受支持。

参数
名称 类型 说明
fn AsyncFunction

要运行的函数,在此期间全局错误侦听器将有效

示例
it('demonstrates global error spies', async function() {
  await jasmine.spyOnGlobalErrorsAsync(async function(globalErrorSpy) {
    setTimeout(function() {
      throw new Error('the expected error');
    });
    await new Promise(function(resolve) {
      setTimeout(resolve);
    });
    const expected = new Error('the expected error');
    expect(globalErrorSpy).toHaveBeenCalledWith(expected);
  });
});