Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问“外部”的夹具数据;它";柏树试验中的功能_Javascript_Testing_Integration Testing_Cypress - Fatal编程技术网

Javascript 访问“外部”的夹具数据;它";柏树试验中的功能

Javascript 访问“外部”的夹具数据;它";柏树试验中的功能,javascript,testing,integration-testing,cypress,Javascript,Testing,Integration Testing,Cypress,我想以编程的方式编写一系列it()测试,给定来自夹具(这似乎是在Cypress中使用数据的正确方法)或其他地方的数据 这个数据是一个对象数组,每个对象都提供了我要编写的每个it()test所需的必要信息 [ { slug:“/某些带有表单/”的页面, slugRedir:“/表单提交后的预期redir页面/”, 表格数据:[ { htmlName:“名字”, 类型:“输入文本”, }, ... ] }, ... ] 下面是我想要达到的目标 describe("CMS-generated pag

我想以编程的方式编写一系列
it()
测试,给定来自夹具(这似乎是在Cypress中使用数据的正确方法)或其他地方的数据

这个数据是一个对象数组,每个对象都提供了我要编写的每个
it()
test所需的必要信息

[
{
slug:“/某些带有表单/”的页面,
slugRedir:“/表单提交后的预期redir页面/”,
表格数据:[
{
htmlName:“名字”,
类型:“输入文本”,
},
...
]
},
...
]
下面是我想要达到的目标

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
未定义的
超出了
it()
范围


总而言之,如果数据来自夹具或可能从其他地方导入,我如何以编程方式编写一系列
it()
测试?

我不建议您这样做。您实际上是在尝试自动生成测试,我可以理解这种冲动,但我建议您将工作投入到编写测试中。这将给你一个机会问你想测试什么,如果你真的需要测试,以及测试结果的含义

如果您真的认为这是明智的,那么您可以对以下表单进行全面测试:

it(`fills and submits forms', function () {
  this.forms.forEach(({ ... }) => {
    // assertions
  })
})
要回答原始问题,您还可以通过导入数据使其可用:

import forms from '../fixtures/forms.json'

// ...

  forms.forEach(...)
很接近,您可以转换为非箭头函数或尝试其中一种


编辑:删除我的解决方案。在我发布了类似的解决方案之后,我发现这一点在这里的一个cypress问题中已经得到了回答:

我不同意,有很多合理的案例可以使用数据驱动测试,大多数测试框架已经提供了这样做的方法。嗯,我不是很信服。虽然可能有适当的时间自动生成测试,但我不认为这是其中之一。太多的假设。如果CMS生成表单和对表单的响应,那么肯定应该测试该行为,但是如果行为根据所使用的slug而变化,那么我希望看到通过特定测试定义的行为,该测试演示边缘情况,而不是隐藏在夹具中。当进入一个新项目时,当测试作为文档时,它使它变得更加容易。具体到OP的情况,我同意。我的评论更多的是为了那些在谷歌上找到这个问题的未来人们。简单的用例-访问URL的集合,检查页面标题是否是期望值。当然,迭代URL+期望值对的集合是有意义的,而不是多次复制和粘贴本质上相同的测试?或者,您是否建议迭代其中的断言,而不是整个测试?