鉴于来自固定装置(在Cypress中使用数据的正确方法)或其他地方的数据,我想以编程方式编写一系列 <svg height="150" width="150">
<defs>
<radialGradient id="grad1" cx="80%" cy="20%" r="100%" fx="100%" fy="50%">
<stop offset="0%" style="stop-color:rgb(0,0,255);stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(0,200,255);stop-opacity:1" />
</radialGradient>
</defs>
<ellipse cx="100" cy="100" rx="30" ry="30" stroke="url(#grad1)" stroke-width="10" fill="none" stroke-linecap="round" stroke-dasharray="1000" stroke-dashoffset="840"/>
</svg
测试。
此数据是一个对象数组,每个对象提供我想编写的每个it()
测试所需的必要信息。
it()
下面是我要实现的目标的想法
[
{
slug: "/some-page-with-form/",
slugRedir: "/expected-redir-page-after-form-submit/",
formData: [
{
htmlName: "firstName",
type: "inputText",
},
...
]
},
...
]
显然,以上操作无效,因为describe("CMS-generated pages with forms", function() {
before(function() {
cy.fixture("forms").as("forms")
});
this.forms.forEach(({ slug, slugRedir, formData }) => {
it(`fills and submits form on ${slug}`, function() {
...
});
})
})
在this.forms
范围之外undefined
。
总结-给定来自灯具或可能导入到其他位置的数据,我将如何以编程方式编写一系列it()
测试?
答案 0 :(得分:0)
我不建议您这样做。您实质上是在尝试自动生成测试,我可以理解这种冲动,但我建议您花点时间编写测试。这将使您有机会询问您要测试的内容,是否真的需要测试以及结果的含义。
如果您确实认为这是明智的选择,则始终可以对以下形式进行全面测试:
it(`fills and submits forms', function () {
this.forms.forEach(({ ... }) => {
// assertions
})
})
要回答最初的问题,您还可以通过导入数据使数据可用:
import forms from '../fixtures/forms.json'
// ...
forms.forEach(...)
答案 1 :(得分:0)
您很接近,you can't use arrow functions and this
in the same spec,您可以转换为非箭头功能,也可以尝试其中一种。
编辑:删除了我的解决方案。发布类似的解决方案后,我发现此问题已在以下柏树问题中得到解答:https://github.com/cypress-io/cypress/issues/3963#issuecomment-483581934