gpt4 book ai didi

cypress - cy.wrap() - 传递字符串或对象之间的区别

转载 作者:行者123 更新时间:2023-12-04 15:50:38 29 4
gpt4 key购买 nike

在使用 Cypress 一段时间后,我注意到 cy.wrap() 有一个奇怪的行为。虽然在钩子(Hook)之前将字符串包装在内部,但表示字符串在所有进一步测试中都可用,但对象仅在第一次测试中可用,而在其余测试中产生未定义。

我已经尝试使用 context() 包装测试,这很有效,但不必要地阻塞了 cypress 测试树 UI。

没有上下文:

describe('Wrap test', function () {
before(function () {
console.log('Before');

cy.wrap('string').as('string');
cy.wrap({ object: true }).as('object');
});

it('Test 1', function () {
console.log('Test 1');
console.log(this.string); // 'string'
console.log(this.object); // { object: true }
});

it('Test 2', function () {
console.log('Test 2');
console.log(this.string); // 'string'
console.log(this.object); // undefined
});
});

有上下文:

describe('Wrap test', function () {
before(function () {
console.log('Before');

cy.wrap('string').as('string');
cy.wrap({ object: true }).as('object');
});

context('Context', function () {
it('Test 1', function () {
console.log('Test 1');
console.log(this.string); // 'string'
console.log(this.object); // { object: true }
});

it('Test 2', function () {
console.log('Test 2');
console.log(this.string); // 'string'
console.log(this.object); // { object: true }
});
})
});

我想在钩子(Hook)之前模拟一个对象,然后在几个测试中使用它。我考虑将所述对象转换为 JSON 格式,因为它可用于所有测试。期待听到更多有经验的人对所呈现场景的意见。

最佳答案

事实证明,清除测试之间的上下文实际上是 Cypress 的故意行为,如 docs here 中所述。 .

当您将单独的测试用例包装在另一个测试套件中时(describe/context),它不会清除上下文(如您所见) suite 如果上下文是在更高级别创建的——这也是有意的。

事实上,它只清除基元,而不清除对象,这是一个错误,我为此创建了一个错误报告:mocha context cleared between tests only for primitives .

关于cypress - cy.wrap() - 传递字符串或对象之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53957613/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com