如果想从头学起Cypress,可以看下面的系列文章哦

https://www.cnblogs.com/poloyy/category/1768839.html

作用

  • 启动服务器以开始将响应路由到 cy.route()  并更改网络请求的行为
  • 前置知识:熟悉 .route() 命令

语法格式

cy.server()
cy.server(options)

options 参数

作用

  • 作为默认值,它们被合并到 cy.route() 中
  • 作为所有请求的配置行为

以下选项被合并为 cy.route() 的默认选项

以下选项控制服务器,将会影响所有请求的行为

命令执行结果

  • 执行结果是 null
  • 且后续不能再链接其他命令

没有参数的栗子

// 启动服务器
cy.server()
  • 任何与 cy.route() 不匹配的请求都将传递到服务器,除非设置了 force404,这样请求变成 404 和拿到一个空 response
  • 与 options.ignore 函数匹配的任何请求都不会被记录或存根(logged、stubbed)
  • 将在命令日志中看到名为(XHR Stub)或(XHR)的请求

带有参数的栗子

进入演示项目目录下

注:演示项目是 cypress 提供的,如何下载可看 Cypress 系列文章的一开始几篇都有写

cd C:\Users\user\Desktop\py\cypress-example-recipes\examples\logging-in__xhr-web-forms

启动演示项目

npm start

浏览器访问项目

http://localhost:7079/

测试代码

context('route 的栗子', function () {

    const username = 'jane.lane'
const password = 'password123' before(function () {
cy.visit('http://localhost:7079/')
}) it('栗子1', function () {
cy.server({
method: 'POST',
status: 503,
delay: 1000,
headers: {
'x-token': 'abc-123-foo-bar'
}
})
cy.route({
url: '**/login',
response: {
success: false,
data: 'Not success'
},
}).as("login")
cy.get("input[name=username]").type(username)
cy.get("input[name=password]").type(`${password}{enter}`)
cy.wait('@login').then((res) => {
cy.log(res)
expect(res.status).to.eq(503)
expect(res.responseBody.data).to.eq('Not success')
expect(res.responseHeaders).to.have.property('x-token', 'abc-123-foo-bar')
})
});
})

测试结果

启动服务器,关闭服务器的栗子

测试代码

it('栗子2', function () {
cy.server()
cy.route({
url: '**/login',
method: 'POST',
status: 503,
response: {
data:"success"
}
}).as("login")
cy.get("input[name=username]").type(username) //第一次发出请求
cy.get("input[name=password]").type(`${password}{enter}`)
cy.wait('@login').then((res) => {
expect(res.status).to.eq(503) // 关闭服务器
cy.server({
enable: false
})
}) cy.visit('http://localhost:7079/')
cy.get("input[name=username]").type(username) //第二次发出请求
cy.get("input[name=password]").type(`${password}{enter}`)
});

测试结果

第二个请求虽然被路由监听到了,但是因为服务器关闭了,所以并没有获取路由的 status、response

注意事项

  • 可以在启动 cy.visit() 之前启动服务器 cy.server()
  • 通常,应用程序在加载时可能会立即发出初始请求(例如,对用户进行身份验证)
  • Cypress 可以在 cy.visit() 之前启动服务器并定义路由(  cy.route() )
  • 下次访问时,服务器 + 路由将在应用程序加载之前立即应用

Cypress系列(70)- server() 命令详解的更多相关文章

  1. Hexo系列(三) 常用命令详解

    Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...

  2. Cypress系列(101)- intercept() 命令详解

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 使用该命令在网络层管理 HTTP ...

  3. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

  4. Python操作redis系列以 哈希(Hash)命令详解(四)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...

  5. Linux Shell系列教程之(八)Shell printf命令详解

    本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...

  6. pssh系列命令详解

    安装 pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可 ...

  7. db2常用命令(详解)大全

    近一年来在项目开发中使用到了IBM的DB2 9.1的数据库产品,跟Oracle相比一些命令有很大的区别,而它最大的功能是支持      xml存储.检索机制,通过XPath进行解析操作,使开发人员免于 ...

  8. Tomcat配置(二):tomcat配置文件server.xml详解和部署简介

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  9. linux netcat 命令详解

    功能说明:强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p< ...

随机推荐

  1. JVM_02 类加载子系统

    JVM细节版架构图 本文针对Class Loader SubSystem这一块展开讲解类加载子系统的工作流程 类加载子系统作用 1.类加载子系统负责从文件系统或者网络中加载class文件,class文 ...

  2. Mybatis接口Mapper内的方法为啥不能重载吗?

    动态代理的功能:通过拦截器方法回调,对目标target方法进行增强. 言外之意就是为了增强目标target方法.上面这句话没错,但也不要认为它就是真理,殊不知,动态代理还有投鞭断流的霸权,连目标tar ...

  3. 微信小程序直播接入

    申请开通小程序直播 1.申请小程序直播有以下几个硬性指标: 1. 满足小程序18个开放类目 2. 主体下小程序近半年没有严重违规 3. 小程序近90天内有过支付行为 4. 主体下公众号累计粉丝数大于1 ...

  4. 腾讯云ClickHouse如何实现自动化的数据均衡?

    ​一.引言 ClickHouse 是一个用于联机分析( OLAP )的列式数据库管理系统( DBMS ).它于 2016 年以 Apache 2.0 协议开源,以优秀的查询性能,深受广大大数据工程师欢 ...

  5. Vulkan在Android使用Compute shader

    oeip 相关功能只能运行在window平台,想移植到android平台,暂时选择vulkan做为图像处理,主要一是里面有单独的计算管线且支持好,二是熟悉下最新的渲染技术思路. 这个 demo(git ...

  6. 一道无限极类 PHP 试题

    记某次笔试碰到的一道无限极类试题,当时时间比较紧(满满六页试题),还是手写代码,所以最终写的有点错误.记不住原题了,但是要求都知道,特此记录下来! 试题 有下面一个数组: $arr = [ '小红' ...

  7. 1.UiPath账密安全保存常见方法

    今天在写流程的时候突然用到密码保存,看到同事不同项目中所用到的方法不同,就看了一下别的同学博客,总结的特别好,自己跟着实操了一遍,受益匪浅. RPA适合于登录不同的系统代替人工操作,而登录系统时难免要 ...

  8. 基于Scrapy的交互式漫画爬虫

    Github项目地址 前言 该项目始于个人兴趣,本意为给无代码经验的朋友做到能开箱即用 阅读此文需要少量Scrapy,PyQt 知识,全文仅分享交流 摘要思路,如需可阅读源码,欢迎提 issue 一. ...

  9. ESD(静电释放)上半部分

    ESD(静电释放)上半部分 ESD:Electro-Static discharge静电释放 1.ESD静电释放的模式 1.1 人体放电模式(human body mode) 人体会释放静电,那么人体 ...

  10. 【字符串算法】字典树(Trie树)

    什么是字典树 基本概念 字典树,又称为单词查找树或Tire树,是一种树形结构,它是一种哈希树的变种,用于存储字符串及其相关信息. 基本性质 1.根节点不包含字符,除根节点外的每一个子节点都包含一个字符 ...