带有 Cypress 和 Mocha 的模板字符串

Template strings with Cypress and Mocha

我正在使用 cypress 和 Mocha。
我想用 mocha 做一些模板,这样我就可以 运行 使用不同的数据集进行相同的测试。但是由于某些原因,模板字符串无法与 Cypress 和 Mocha 结合使用。 这是我的:

import { CheckoutActions } from '../support/actions/common/checkout-actions';
import { CheckoutActionsCats } from '../support/actions/cats/checkout-actions';

export interface VoucherTestData {
  ctx: string;
  checkoutActions: CheckoutActions;
}

let dataSet: VoucherTestData[] = [
  {
    ctx: ' cats',
    checkoutActions: new CheckoutActionsCats(),
  },
];

dataSet.forEach(function (data) {
  context(`${data.ctx}`, function () {
    console.log('Context data.ctx');
    console.log(data.ctx); // Prints cats
    if (data.ctx === 'cats') {
      console.log('Data is cats');
    } else {
      console.log('Data failed'); // This is printed. Why?
    }
    const env = Cypress.env('dataEnv');

    beforeEach(function () {
      console.log('beforeEach data.ctx');
      console.log(data.ctx); // Prints cats
      cy.fixture(env + '/users').as('users'); // users is a JSON file
      cy.fixture(env + '/products').as('products'); // products is a JSON file
      cy.fixture(env + '/vouchers').as('vouchers'); // vouchers is a JSON file
    });

    describe('My suite', function () {
      beforeEach(function () {
        console.log('Suite');
        console.log(`${data.ctx}`); // Prints cats
        this.url = Cypress.env(`${data.ctx}Baseurl`); // This is undefined. If I use Cypress.env('cats'); then it works
        this.product = this.products[`${data.ctx}`]; // This is undefined. If I put this.products['cats'] than it is ok
        this.testVoucher = this.vouchers[`${data.ctx}`].voucher; // Error "Cannot read property 'voucher' of undefined". 
        // If i put this.vouchers['cats'].voucher than it is ok
      });
      it('should do something', function () {
        cy.log(this.url); // Prints undefined. Why?
        cy.log(data.ctx); // Prints cats
        cy.log(this.product.standardProduct);
        cy.log(this.testVoucher.CHF15.threshold);
      });
    });
  });
});

有人可以解释为什么在与 cypress 结合使用时这不起作用吗?变量 data.ctx 显然在那里,但是当使用 template/interpolating 字符串时,事情就停止了。 这让我很困惑。 请帮助:)

您有一个 错别字 - 首字母 data.ctx 中的前导 space。

两者都

if (data.ctx.trim() === 'cats')

或者去掉 space(你为什么需要它?)