我正在编写一个很长的测试用例以在赛普拉斯注册。有很多选择器和文本,所以我决定将它们存储为const到测试套件的顶部(如此处https://www.cypress.io/blog/2019/01/03/stop-using-page-objects-and-start-using-app-actions/#adding-items-example所述):
describe("Test registration", () => {
const REGISTER = "[data-cy=register]";
... more 20 selectors
const SIRE = "Sir";
const FAKE_NAME = "Cypress";
const LAST_NAME = "[data-cy=register-lastname]";
const FAKE_LNAME = "Test";
const EMAIL = "[data-cy=register-email]";
... more 20 selectors
const SUCCESS = "success!";
it("Checks sth", () => {
cy.server();
cy.visit("/");
cy.get(REGISTER).click();
...
cy.findByText(SIRE).click();
cy.get(FIRST_NAME).type(FAKE_NAME);
cy.get(LAST_NAME).type(FAKE_LNAME);
cy.get(EMAIL).type(FAKE_EMAIL);
...
cy.get("h2").contains(SUCCESS);
});
});
这是正确的方法,还是我应该定义一个Object以避免定义太多的const,例如:
const selectors = {
register: '…',
…
}
这只是一个见解,我不会说两者都是错误的。
但是,我要指出的是,在JavaScript中,不能覆盖const的值,但是当const是对象时,可以覆盖对象的属性。