【问题标题】:reset cypress config on rerunning tests在重新运行测试时重置赛普拉斯配置
【发布时间】:2021-12-19 11:11:16
【问题描述】:

我想重置配置,就像我们每次运行 cypress 测试时刷新浏览器一样。我正在使用

"content-type": "application/x-protobuf"

作为默认标头,但当我的响应之一是 json cypress 时,默认将其更改为 application/json。

这是我的拦截器:

Cypress.Commands.overwrite('intercept', (originalFn, { method, url }, options) => {
  method = 'POST'
  url = `${Cypress.env('EXTERNAL_API')}/${url}`
  options = {
    ...options,
    headers: Cypress.env('DEFAULT_HEADER'),
  }

  return originalFn(method, url, options)
})

【问题讨论】:

  • 您如何确定请求是否应具有application/jsonapplication/x-protobuf?是否某些端点是 json 而其他端点是 protobuf?还是说第一个请求后,你总是想要 json?
  • 成功的响应是protobuf格式,所有网络错误都是json格式。这就是两难选择。:)

标签: javascript reactjs cypress


【解决方案1】:

我有问题。当我在拦截器中通过body 而不是fixture 时,赛普拉斯将标头强制为application/json。没有办法改变它。 为了解决这个问题,我将json 文件作为fixture 传递,并据此设置我的自定义标头。

Cypress.Commands.overwrite('intercept', (originalFn, { method, url }, options) => {
  method = 'POST'
  url = `${Cypress.env('EXTERNAL_API')}/${url}`
  const isJsonHeader = options?.fixture?.toLowerCase()?.includes('.json') ? true : false
  options = {
    ...options,
    headers: isJsonHeader ? Cypress.env('JSON_HEADER') : Cypress.env('DEFAULT_HEADER'),
  }
  return originalFn(method, url, options)
})

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    相关资源
    最近更新 更多