typescript 向Cypress夹具添加It功能

tjrkku2a  于 2022-12-14  发布在  TypeScript
关注(0)|答案(2)|浏览(114)

我想我没有抓住重点,fixture不能在测试之外使用,但是我想使用'it'函数来测试JSON文件中的每个fixture。
我不确定我现在是否正确理解了fixture或者正确使用了它们。下面是我的Cypress TypeScript代码:

let row: string;
let stream: string;

cy.fixture('AllNotificationStates').then((notifications) => {
  for (let notification in notifications) {
    row = notifications[notification].rowId;
    stream = notifications[notification].streamId;

    it(`${row}`, () => {
      cy.intercept('GET', '**/api/', (req) => {
        req.reply((req) => {
          req.statusCode = 200;
          req.body = [notifications[notification]];
        });
      });
      cy.visit('/notification/dashboard');

      co.setTestId(row);
      co.assertRowIDandStreamID(row, stream);
    });
  }
});
jogvjijk

jogvjijk1#

您应该使用cypress-each执行所有测试,无论是否有一个或多个失败。根据所需的时间,您可能要将每个测试分解到另一个档案中。

import 'cypress-each' // can included in /support/index.js
import allNotifications from 'notificaitonsPath'

describe('Disclaimer check', () => {
  it.each(allNotifications)
    ((notify) => notify.rowId, // use function to print out row id for test title
     (notification) => {
       // test code
     })
})
edqdpe6u

edqdpe6u2#

如果在it块之前使用cy.fixture,则不能使用cy.fixture,而是可以直接导入,然后像这样使用。

import notifications from '../fixtures/AllNotificationStates.json'

for (let notification in notifications) {
  let row = notifications[notification].rowId
  let stream = notifications[notification].streamId

  it(`${row}`, () => {
    cy.intercept('GET', '**/api/', (req) => {
      req.reply((req) => {
        req.statusCode = 200
        req.body = [notifications[notification]]
      })
    })
    cy.visit('/notification/dashboard')

    co.setTestId(row)
    co.assertRowIDandStreamID(row, stream)
  })
}

相关问题