我正在进行typescript项目,我正在尝试用柏树编写一些测试
我收到以下错误:TypeErrorcy.login不是一个函数。因为这个错误发生在每次挂钩之前的一个过程中,所以当我尝试调用自定义命令cy.login((时,我们将跳过当前套件中的剩余测试:Dashboard页面
这是自定义命令
//support/index.ts
Cypress.Commands.add("login", (email, password) => {
cy.request("http://localhost:3000/login", {
email,
password,
}).then((r) => {
window.localStorage.setItem("access", r.body.access);
window.localStorage.setItem("refresh", r.body.refresh);
});
});
//cypry/global.d.ts
declare global {
namespace Cypress {
interface Chainable {
/**
* Custom command to select DOM element by data-cy attribute.
* @example cy.dataCy('greeting')
*/
dataCy(value: string): Chainable<Element>;
// login(email: string, password: string): Chainable<Element>;
// login(email: string, password: string, loginOptions?: LoginOptions): void;
login(username: string, password: string): Chainable<string>;
}
}
}
//柏树/e2e/仪表板.spec.cy.ts
describe("Dashboard page", () => {
beforeEach(() => {
cy.login("liban.test10@gmail.com", "password");
});
it("should actually be accessible", () => {
cy.visit("/dashboard");
});
});
由于命名空间声明是在*.d.ts文件类型中完成的,因此新的类型"支持";标识符应该添加到tsconfig.json文件中。
{
"compilerOptions": {
"target": "es5",
"lib": ["es5", "dom"],
"types": ["cypress", "./support"]
},
"include": ["**/*.ts"]
}
通过添加"/支持";对于tsconfig.json文件,它将使TypeScript查找成为给定目录中的声明文件(*.d.ts文件(。
否则,另一种方法是添加:
<reference types="../support"/>
到每个需要新的自定义命令的文件,但这将是非常重复的。