【发布时间】:2021-07-03 20:08:42
【问题描述】:
问题:
尝试在从赛普拉斯自定义命令返回的项目数组中调用测试。
尝试使用 npm 包 mocha-each 的方法和使用 forEach 函数的另一个测试。
自定义命令:
我创建了一个自定义 Cypress 命令,该命令返回一个 AppParamsType 数组:
/// <reference types="Cypress" />
import { AppParamsType } from 'support';
declare global {
namespace Cypress {
interface Chainable {
cmdGetAppsParams: () => Chainable<AppParamsType[]>;
}
}
}
export function cmdGetAppsParams() {
const paramsApps: AppParamsType[] = [];
cy.cmdAppKeys()
.then(($appKeys: string[]) => {
cy.wrap($appKeys).each(($appKey: string) => {
cy.cmdProviderAppParams($appKey).then((paramApp: AppParamsType) => {
paramsApps.push(paramApp);
});
});
})
.then(() => {
return cy.wrap(paramsApps);
});
}
Cypress.Commands.add('cmdGetAppsParams', cmdGetAppsParams);
使用自定义命令测试:
以下 Cypress 测试调用自定义命令 cmdGetAppsParams() 以返回项目数组。
正在迭代数组,其中一个测试使用 npm 包 mocha-each,另一个测试使用 Array forEach。这两种方法都不会在循环中调用测试。
import * as forEach from 'mocha-each';
let apps: AppParamsType[];
describe('DESCRIBE Apps Add Apps Spec', () => {
before('BEFORE', () => {
cy.cmdGetAppsParams().then(($apps: AppParamsType[]) => {
expect($apps).to.be.an('array').not.empty;
apps = $apps;
});
});
it('TEST Apps Params Array', () => {
cy.task('log', { line: 'A', data: apps });
expect(apps).to.be.an('array').not.empty;
});
it('TEST each item mocha forEach', () => {
cy.task('log', { line: 'B', data: apps });
forEach(apps).it('item', (item: AppParamsType) => {
cy.task('log', { line: 'B.1', data: item });
expect(item).to.be.an('object').not.null;
});
});
it('TEST each item array forEach', () => {
cy.task('log', { line:'C', data: apps });
expect(apps).to.be.an('array').not.empty;
apps.forEach((item: AppParamsType) => {
it('TEST App Param', () => {
cy.task('log', { line: 'C.1', data: item });
expect(item).to.be.an('object').not.null;
});
});
});
我看到的结果是外部测试,由标签 'A'、'B' 和 'C' 表示,正在被调用。但是,不是内部测试,这将由标签 'B.1' 和 'C.1' 表示:
{
"line": "A",
"data": [
***
]
}
{
"line": "B",
"data": [
***
]
}
{
"line": "C",
"data": [
***
]
}
【问题讨论】:
-
mocha-each应该按照码头使用 CommonJS 语法const forEach = require('mocha-each')导入。import * as forEach from 'mocha-each'没有给你一个函数。
标签: javascript mocha.js cypress data-driven-tests add-custom-command