Передать строку в `it` динамически из прибора? - PullRequest
0 голосов
/ 06 июня 2019

Я хочу динамически передать строку в it из прибора (который разрешается в permissionsObj). Пожалуйста, смотрите строку A в коде.

dynamic string = some__static__string + ${headerPerms}

и

headerPerms = permissionsObj['header'];

Но почему-то я получаю headerPerms undefined при передаче на it

Код:

строка A: headerPerms не определено.

строка B: headerPerms успешно регистрируется.

Можно ли как-нибудь передать строку в it динамически из прибора?

describe(`role based testing:: header`, function () {
    let headerPerms;
    before(() => {
        cy.fixture('../fixtures/permissions').then((permissionsObj) => {
            headerPerms = permissionsObj['header'];
        });
        cy.wait(1000);
    });

    it(`checks if dashboard_KB exists:: ${headerPerms}`, function () { // line A: headerPerms is undefined
        cy.log(headerPerms);//Line B: logs successfully
    });
});

Скриншот:

enter image description here


крепление:

{
  "header": {
    "dashboard_nav": {
      "admin": true,
      "developer": true,
      "analyst": true,
      "tester": true
    },
    "dashboard_KB": {
      "admin": true,
      "developer": true,
      "analyst": false,
      "tester": false
    },
    "dashboard_analytics": {
      "admin": true,
      "developer": true,
      "analyst": true,
      "tester": false
    },
    "dashboard_reports": {
      "admin": true,
      "developer": true,
      "analyst": false,
      "tester": false
    },
    "header-profile": {
      "admin": true,
      "developer": true,
      "analyst": true,
      "tester": true
    },
    "header-enterprise-profile": {
      "admin": true,
      "developer": false,
      "analyst": false,
      "tester": false
    },
    "header-sign-out": {
      "admin": true,
      "developer": true,
      "analyst": true,
      "tester": true
    }
  }
}

1 Ответ

0 голосов
/ 06 июня 2019

Вы не можете связать значения вашего объекта таким образом. По сути, вы теряете контекст и, следовательно, видите значение заголовка как неопределенное.

используйте приведенный ниже фрагмент кода, который будет работать как шарм.

const fixtures = require("../fixtures/headersJsonFile");
describe('feature', function () {

    const headers = Object.keys(fixtures.header);
    headers.forEach(header => {
        it(`header ${header} test`, () => {
            cy.log('', header);
        });
    });

});

Я проверил, и он работает .... Ниже приведен вывод для того же.

  feature
    ✓ header dashboard_nav test
    ✓ header dashboard_KB test
    ✓ header dashboard_analytics test
    ✓ header dashboard_reports test
    ✓ header header-profile test
    ✓ header header-enterprise-profile test
    ✓ header header-sign-out test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...