SimpleTest 框架

class SimpleTest()

SimpleTest 框架对象。

static SimpleTest.doesThrow(fn, name)

检查函数调用是否抛出异常。

static SimpleTest.enableLegacyUnpartitionedStorage()

将此窗口切换到旧版未分区存储模式。这将为此框架禁用存储和 Cookie 分区。这在测试使用 BroadcastChannels 与打开的窗口进行协调且未验证存储分区行为时很有用。

static SimpleTest.endMonitorConsole()

停止监视控制台输出。

static SimpleTest.executeSoon(aFunc)

在调用后不久执行函数,但允许调用方继续工作(或完成)。

参数:
  • aFunc (函数) – 即将执行的函数。

static SimpleTest.expectAssertions(min, max)

请注意,给定的断言范围是预期的。当不调用此函数时,预期断言数为 0。当只给出一个参数时,预期断言数为该参数的值。

我们预期会有断言的测试(这在很大程度上应该是一种过渡机制,以将我们当前情况下的断言计数降低)可以调用 SimpleTest.expectAssertions() 函数,使用一个或两个参数:一个参数给出预期的确切数量,两个参数给出范围。例如,测试可能会执行以下操作之一

示例

// Currently triggers two assertions (bug NNNNNN).
  SimpleTest.expectAssertions(2);

  // Currently triggers one assertion on Mac (bug NNNNNN).
  if (navigator.platform.indexOf("Mac") == 0) {
    SimpleTest.expectAssertions(1);
  }

  // Currently triggers two assertions on all platforms (bug NNNNNN),
  // but intermittently triggers two additional assertions (bug NNNNNN)
  // on Windows.
  if (navigator.platform.indexOf("Win") == 0) {
    SimpleTest.expectAssertions(2, 4);
  } else {
    SimpleTest.expectAssertions(2);
  }

  // Intermittently triggers up to three assertions (bug NNNNNN).
  SimpleTest.expectAssertions(0, 3);
static SimpleTest.expectChildProcessCrash()

指示测试框架当前测试预期一个或多个崩溃(来自插件或 IPC 文档),并且应删除这些崩溃的 minidump。

static SimpleTest.expectConsoleMessages(testfn, msgs, continuation)

同步运行 testfn,并监视其控制台输出。

msgs 的处理方式如上所述,用于 monitorConsole。

testfn 返回后,控制台监视将停止,并且 continuation 将异步调用。

static SimpleTest.expectRegisteredServiceWorker()

指示测试框架此测试预计在完成时会留下一个注册的服务工作线程。

static SimpleTest.expectUncaughtException(aExpecting)

指示测试框架测试期间的下一个未捕获异常是预期的,并且不应导致测试失败。

static SimpleTest.finish()

完成测试。这是自动调用的,除非已调用 SimpleTest.waitForExplicitFinish()。

static SimpleTest.ignoreAllUncaughtExceptions(aIgnoring)

指示测试框架测试期间的所有未捕获异常都是已知问题,将来应该修复,但目前不应导致测试失败。

static SimpleTest.is(a, b, name)

大致相当于 ok(Object.is(a, b), name)

static SimpleTest.isExpectingUncaughtException()

返回测试是否已指示它预期会出现未捕获异常。

static SimpleTest.isIgnoringAllUncaughtExceptions()

返回测试是否已指示应忽略所有未捕获异常。

static SimpleTest.monitorConsole(continuation, msgs, forbidUnexpectedMsgs)

监视从现在到调用 endMonitorConsole 之前的控制台输出。

预期接收 msgs(一个数组)的元素所描述的所有控制台消息,按照 msgs 中列出的顺序;每个元素都是一个对象,可能具有以下任意数量的属性

message、errorMessage、sourceName、sourceLine、category:字符串或正则表达式 lineNumber、columnNumber:数字 isScriptError、isWarning:布尔值

字符串、数字和布尔值必须与第 N 个控制台消息的命名属性相等。正则表达式必须匹配。消息中存在的但模式对象中不存在的任何字段都将被忽略。

除了上述属性外,msgs 中的元素可能具有 forbid 布尔属性。当 forbid 为 true 时,每次收到匹配的消息时都会记录一个失败。

如果 forbidUnexpectedMsgs 为 true,则控制台中收到的消息必须与 msgs 中非禁止的消息完全匹配;对于每个未由 msgs 中的下一个元素描述的接收到的消息,都会记录一个失败。如果为 false,则其他非禁止消息将被忽略,但仍必须接收所有预期消息。

调用 endMonitorConsole 后,continuation 将异步调用。(通常,您希望在此处传递 SimpleTest.finish。)

在未调用 SimpleTest.waitForExplicitFinish 的测试中使用此函数是不正确的。

static SimpleTest.ok(condition, name)

类似于断言。

static SimpleTest.promiseClipboardChange(aExpectedStringOrValidatorFn, aSetupFn, aFlavor, aTimeout, aExpectFailure, aDontInitializeClipboardIfExpectFailure)

waitForClipboard 的基于 Promise 的版本。

static SimpleTest.promiseFocus(aObject, expectBlankPage=false, aBlurSubframe=false)

如果页面尚未加载,则等待加载事件。如果页面尚未获得焦点,则聚焦并等待窗口获得焦点。如果当前页面为 ‘about:blank’,则假定页面尚未加载。如果预期存在空白页面,则将 expectBlankPage 传递为 true 以不进行此假设。

如果目标对象与“window”不同,则应指定它。实际获得焦点的窗口可能是 aObject 的后代窗口。

参数:
  • aObject (Window|browser|BrowsingContext) – 要聚焦的可选对象,可以是以下任意一种: window - 要聚焦的窗口对象 browser - <browser>/<iframe> 元素。将聚焦框架内的顶级窗口。 browsing context - 包含要聚焦窗口的浏览上下文 如果未指定,则默认为全局“window”。

  • expectBlankPage (boolean) – 如果 targetWindow.location 为“about:blank”,则为 True。

  • aBlurSubframe (boolean) – 如果为 true,并且聚焦了要聚焦窗口内的子框架,则将其模糊,以便指定的窗口或浏览上下文接收焦点事件。

返回值:

获得焦点的浏览上下文。

static SimpleTest.registerCleanupFunction(aFunc)

注册一个清理/拆卸函数(可能是异步的),在所有任务完成后、运行下一个测试之前运行。如果为异步(或函数返回一个 Promise),框架将等待 Promise/异步函数解析。

参数:
  • aFunc (function) – 要运行的清理/拆卸函数。

static SimpleTest.registerCurrentTaskCleanupFunction(aFunc)

注册一个清理/拆卸函数(可能是异步的),在当前任务完成后、运行下一个任务之前运行。如果为异步(或函数返回一个 Promise),框架将等待 Promise/异步函数解析。

参数:
  • aFunc (function) – 要运行的清理/拆卸函数。

static SimpleTest.registerTaskCleanupFunction(aFunc)

注册一个清理/拆卸函数(可能是异步的),在每个任务完成后、运行下一个任务之前运行。如果为异步(或函数返回一个 Promise),框架将等待 Promise/异步函数解析。

参数:
  • aFunc (function) – 要运行的清理/拆卸函数。

static SimpleTest.report()

生成测试报告,并将其作为 DIV 元素返回。

static SimpleTest.requestCompleteLog()

强制显示所有测试消息。仅适用于当前测试。

static SimpleTest.requestFlakyTimeout(reason)

请求框架允许使用 setTimeout(func, timeout),其中 timeout > 0。这需要说明测试的作者意识到测试中由此引起的固有易变性,并断言由于某种原因,别无他法只能使用魔术超时值数字。

强烈建议不要使用此函数。在使用之前请三思。此类魔术超时值可能导致测试出现间歇性故障,并且几乎从不需要!

参数:
  • reason (String) – 测试需要超时的原因的字符串表示形式。

static SimpleTest.requestLongerTimeout(factor)

将父运行程序为此测试使用的超时乘以给定的因子。

例如,在可能需要很长时间才能完成的测试中,使用“SimpleTest.requestLongerTimeout(5)”将使其完成时间延长 5 倍。

参数:
  • factor (Number) – 要为此测试的超时使用的乘法因子。

static SimpleTest.reset()

重置此 SimpleTest 对象具有的任何状态。这对于跨运行重用同一个 SimpleTest 对象的浏览器 chrome mochitests 非常重要。

static SimpleTest.runTestExpectingConsoleMessages(testfn, msgs)

围绕 expectConsoleMessages 的包装器,用于测试只有一个 testfn 要运行的情况。

static SimpleTest.showReport()

在浏览器中显示报告

static SimpleTest.todo_is(a, b, name)

is 和 isnot 的副本,其中对 ok 的调用被替换为对 todo 的调用。

static SimpleTest.toggle(el)

切换元素可见性

static SimpleTest.toggleByClass(cls, evt)

切换具有特定类的 div 的可见性。

static SimpleTest.waitForCondition(aCond, aCallback, aErrorMsg)

等待一段时间(实际上这里最多 3 秒)的条件。

参数:
  • aCond (function) – 返回条件结果的函数

  • aCallback (function) – 条件通过或超时后调用的函数。

  • aErrorMsg (String) – 条件在超时前未能通过时显示的消息。

static SimpleTest.waitForExplicitFinish()

告诉 SimpleTest 在文档加载时不要完成测试,这对于异步测试很有用。

当调用 SimpleTest.waitForExplicitFinish 时,需要显式 SimpleTest.finish()。

static SimpleTest.waitForFocus(callback, aObject, expectBlankPage)

promiseFocus 的使用回调的版本。为了兼容性,回调传递一个参数,即获得焦点的窗口。如果获得焦点的窗口不在同一个进程中,则提供 null。