我在TypeScript中实现了一个自定义赛普拉斯:
// support/commands.js
const login = () => {
console.log('Logging in...');
};
Cypress.Commands.add('login', login);
declare namespace Cypress {
interface Chainable {
login: typeof login;
}
}
我试着用它来调用它:
describe('Login Scenario', () => {
it('should allow a user to login', () => {
cy.visit('/');
cy.login();
});
});
然而,似乎没有 Build 命令:
TypeError:cy.login不是函数
如果我用纯JavaScript编写命令(删除命名空间声明并将调用更新为 (cy as any).login();
,它可以工作 .
我错过了什么?
1 回答
我通过在我的命令文件夹中添加index.d.ts文件来修复它 . 在这个文件中我添加了这样的东西:
如果您不导入或导出任何内容,只需省略全局命名空间声明:
请记住,它不适用于Typesciprt <2.3,因为必须支持默认的泛型类型 .