是否可以跳过我的Cypress index.js 支持文件中的某个特定规范文件(access.spec.js)中的beforeEach
功能?>
index.js
// This example support/index.js is processed and
// loaded automatically before your test files.
beforeEach(function () {
cy.request('POST', 'https://exampleURL.com', {
email: 'email',
password: 'password'
}).then((response) => {
cy.setCookie('accessToken', response.body.AccessToken);
});
cy.setCookie('email', 'email');
cy.setCookie('environment', '3');
cy.setCookie('name', 'name');
}
access.spec.js
it("it should send user back to login screen when AccessToken is missing", () => {
// Code here
});
答案 0 :(得分:2)
从传统的角度来看, support / index.js 中的beforeEach
块应仅具有适用于 all 测试规范的代码。如果逻辑仅与某些测试有关,而与其他测试无关,则不应将其放在 support / index.js 中。
试图覆盖赛普拉斯打算如何使用 support / index.js 是针对框架而不是针对框架。
随后,在需要此测试的所有测试中复制此beforeEach
逻辑的另一种方法是创建一个Custom Command,如下所示:
Cypress.Commands.add('login', () => {
cy.request('POST', 'https://exampleURL.com', {
email: 'email',
password: 'password'
}).then((response) => {
cy.setCookie('accessToken', response.body.AccessToken);
});
cy.setCookie('email', 'email');
cy.setCookie('environment', '3');
cy.setCookie('name', 'name');
})
...然后,从需要此功能的规范中,您可以有一个更简单的beforeEach
块,如下所示:
beforeEach(function() {
cy.login();
});
但是,鉴于您的 access.spec.js 测试与缺少的accessToken
有关,您将不会在该特定测试中使用beforeEach
块。而是将登录代码复制到该测试中,并使用cy.route
而不是cy.request
(它会到达您的实际端点),以便您可以stub out不返回{{ 1}}。