我想編譯一個串列并將它們推送到賽普拉斯的 json 陣列中。
這就是 json 輸出的樣子:
[
{
"role": "Administrator",
"scenarios": [
"clients_a",
"clients_d",
"clients_f",
....
]
}
]
到目前為止,這是我的代碼:
const permission_list = require('../../fixtures/permissions/permissions_admin.json')
const test_plan = 'cypress/fixtures/permissions/test_plan_admin.json'
const role = 'Administrator'
describe('Test plan creator for Administrator', () => {
it('create a test plan', () => {
//prepare the json array
cy.writeFile(test_plan, [{role: role,scenarios: []}])
cy.get(permission_list[0].granted_permissions).then((list) => {
if (Cypress.$.inArray('clients', list) != -1) {
cy.readFile(test_plan).then((scenarios) => {
scenarios.push('clients_a') // this is where I make a mistake I suppose
// write the merged list
cy.writeFile(test_plan, scenarios)
})
}
///added to handle case "clients" was not found in Array
else {
}
})
})
})
這是我的代碼的輸出:
[
{
"role": "Administrator",
"scenarios": []
},
"clients_a" <-- should be inside the list behind "scenarios"
]
所以它很接近但沒有雪茄。如何將值推"clients_a"送到串列中"scenarios"?
uj5u.com熱心網友回復:
我會采取的方法是在記憶體中做所有事情,最后只寫一次完成的串列。
這樣做會稍微加快速度,但主要優點是您不必擔心追加。
const permission_list = require('../../fixtures/permissions/permissions_admin.json')
const test-plan-file-path = 'cypress/fixtures/permissions/test_plan_admin.json'
const role = 'Administrator'
describe('Test plan creator for Administrator', () => {
it('create a test plan', () => {
//prepare the json array
const scenarios = []
cy.get(permission_list[0].granted_permissions).then((list) => {
if (Cypress.$.inArray('clients', list) != -1) {
scenarios.push('clients_a')
}
})
// write the result
const plan = [{ role, scenarios}]
cy.writeFile(test-plan-file-path, plan)
})
})
這里還有一些奇怪的東西,看起來你在一個回圈中推送多個專案,但這里沒有回圈。需要查看更多應用程式以建議如何解決該問題。
uj5u.com熱心網友回復:
你可以做這樣的事情。您必須在 JSON 檔案中創建一個結構。使用flag: a 您可以在檔案末尾附加文本而不是覆寫它。
describe('Test plan creator for Administrator', () => {
it('create a test plan', () => {
//prepare the json array
cy.writeFile(test_plan, '[{role: role,scenarios: [')
cy.get(permission_list[0].granted_permissions).then((list) => {
if (Cypress.$.inArray('clients', list) != -1) {
cy.writeFile(test_plan, 'clients_a', {flag: 'a '})
}
})
cy.writeFile(test_plan, ']}]', {flag: 'a '}) //complete the structure with closing brackets
})
})
uj5u.com熱心網友回復:
如果你想推送多個客戶端 ID,我就是這樣做的
const permission_list = require('../../fixtures/permissions/permissions_admin.json')
const test_plan = 'cypress/fixtures/permissions/test_plan_admin.json'
const role = 'Administrator'
describe('Test plan creator for Administrator', () => {
before(() => {
cy.writeFile(test_plan, [{role: role, scenarios: []}])
})
it('create a test plan', () => {
cy.fixture('test_plan_admin.json').then(plan => {
const list = permission_list[0].granted_permissions
if (list.includes('clients')) {
plan.scenarios.push('clients_a')
}
cy.writeFile(test_plan, plan)
})
})
it('another client', () => {
cy.fixture('test_plan_admin.json').then(plan => {
const list = permission_list[0].granted_permissions
if (list.includes('clients')) {
plan.scenarios.push('clients_a')
}
cy.writeFile(test_plan, plan)
})
})
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412334.html
標籤:
