Skip to main content
Cypress应用

spread

将数组展开为多个参数。

info

.then() 功能相同,但始终要求其主体为类数组结构。

语法

.spread(callbackFn)
.spread(options, callbackFn)

用法

正确用法

cy.getCookies().spread(() => {}) // 获取所有cookie

错误用法

cy.spread(() => {}) // 错误,不能直接链式调用'cy'
cy.clock().spread() // 错误,'clock'不返回数组

参数

fn (函数)

传入一个将数组展开为其参数的回调函数。

options (对象)

传入一个选项对象以改变.spread()的默认行为。

选项默认值描述
timeoutdefaultCommandTimeout超时前等待.spread()解析的时间

生成结果 了解主题管理

  • .spread()返回回调函数的返回值。
  • 如果返回nullundefined.spread()不会改变主体。
  • 如果返回值是DOM元素,在.spread()后继续链式调用依赖主体的命令是不安全的

示例

别名路由

展开别名路由数组

cy.intercept('/users/*').as('getUsers')
cy.intercept('/activities/*').as('getActivities')
cy.intercept('/comments/*').as('getComments')
cy.wait(['@getUsers', '@getActivities', '@getComments']).spread(
(getUsers, getActivities, getComments) => {
// 每个拦截请求现在都是独立的参数
}
)

展开cookie数组

cy.getCookies().spread((cookie1, cookie2, cookie3) => {
// 每个cookie现在都是独立的参数
})

规则

要求 了解命令链

  • .spread()需要链式调用在前一个命令之后。
  • .spread()需要链式调用在返回类数组结构的命令之后。

断言 了解断言

  • .spread()只会运行一次你链式调用的断言,不会重试

超时设置 了解超时机制

  • .spread()可能会因等待你返回的promise解析而超时。

命令日志

  • .spread()_不会_在命令日志中记录

历史

版本变更
0.5.9添加.spread()命令

另请参阅