vue.js - 如何在 CypressJs 中设置多个环境
问题描述
我无法弄清楚如何正确设置我的 cypressJs 环境以进行测试。我很想得到一些帮助。
在我的index.html
文件中,在该<script>
区域中,我正在添加一个CONFIG
对象。在生产中,此配置对象由 MVC 应用程序添加。此配置对象可以有许多不同的状态(每个用户的某些信息可能丢失或不同)。在cypress.json
文件中,在“env”下我有同样的对象。我spec.js
通过调用Cypress.env("CONFIG");
which 在文件中使用它就可以了。
但是,我想为不同的测试更改应用程序/环境变量的状态。这可能吗?
我想使用一个CONFIG
包含所有数据的规范文件和一个使用CONFIG
缺少数据的对象(例如地址 == null)运行一个规范文件,这样我就可以在这两种情况下正确测试。
这是可能的还是我在做一些根本错误的事情?
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<script>
CONFIG = {
dealer: {
id: 19285,
address: "343 Somewhere Lane SpringField, TN 47383",
name: "HUDSON TRACTOR & RENTAL EQUIPMENT & OTHER HEAVY THINGS
}
</script>
</head>
</html>
cypress.json
{
"env": {
"CONFIG": {
dealer: {
id: 19285,
address: "343 Somewhere Lane SpringField, TN 47383",
name: "HUDSON TRACTOR & RENTAL EQUIPMENT & OTHER HEAVY THINGS
}
}
}
}
解决方案
一次针对单个环境运行规范文件更像是一种最佳实践。您要么使用覆盖,要么cypress.env.json
为每个环境(例如 test 和 prod)创建 2 个配置文件,这将覆盖在cypress.env.json
和中设置的 env 变量cypress.json
。https://docs.cypress.io/guides/guides/environment-variables.html#Option-2-cypress-env-json
但是,如果您想要一个快速而肮脏的解决方案来解决上述问题(我不建议这样做),您可以使用以下内容设置您的规范文件:
柏树.json
{
"env": {
"CONFIG": {
"id": "19285",
"address": "343..."
},
"CONFIG_PROD": {
"id": "19285",
"address": ""
}
}
}
spec_1.js
const config = Cypess.env("CONFIG")
spec_2.js
const config = Cypress.env("CONFIG_PROD")
或者只是简单地将它们放在夹具文件下(我认为这更适合这种情况): config.json
{
"test": {
"id": "19285",
"address": "343..."
},
"prod": {
"id": "19285",
"address": ""
}
}
spec_1.js
import {test, prod} from '../fixtures/config.json'
const address = test.address
const address_null = prod.address //If you would like to run this on another 'it' test
spec_1.js
import {prod} from '../fixtures/config.json'
const address_null = prod.address
推荐阅读
- angular - 如何使用 Angular 6 调试 dotnet core spa
- python - 导入一个python模块并实现它
- c++ - 背包问题,视觉工作室问题
- angular - 如何使用搜索操作在 Angular 中显示错误消息
- class - 如何将数据从一个类传递到另一个类,同时在 Flutter 中使其可变?
- angular - 订阅 ngrx 商店多次触发
- python - 如何将 int32 类型的 4D numpy 数组转换为 tfrecords?
- angular - Angular ui路由使用参数导航
- cocoa - NSStatusItem.popUpMenu 有什么替代品?
- java - 会话 Bean 的默认类型是什么?