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。