Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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
ReactJS+;柏树E2E试验_Reactjs_E2e Testing_Cypress - Fatal编程技术网

ReactJS+;柏树E2E试验

ReactJS+;柏树E2E试验,reactjs,e2e-testing,cypress,Reactjs,E2e Testing,Cypress,对于任何有React+Cypress经验的人来说,这是一个快速的问题——编写我的第一组E2E测试,下面是困扰我的问题: cy.visit('http://movinito.docker.localhost:3000/company/subcontractors'); 有效,但是 cy.visit('/company/subcontractors'); 无法按预期工作(在登录后将我重定向到仪表板,并在我尝试断言包含“Subscriber”的路径名时停留在仪表板上) 我在cypress.json

对于任何有React+Cypress经验的人来说,这是一个快速的问题——编写我的第一组E2E测试,下面是困扰我的问题:

cy.visit('http://movinito.docker.localhost:3000/company/subcontractors');
有效,但是

cy.visit('/company/subcontractors');
无法按预期工作(在登录后将我重定向到仪表板,并在我尝试断言包含“Subscriber”的路径名时停留在仪表板上)

我在cypress.json中的baseUrl是

{"baseUrl": "http://react_frontend.movinito.docker.localhost:3000"}
它通常是有效的(如果你怀疑的话)

我想使用更短、更好的版本
cy.visit('/company/subcontractor')而不是冗长的baseUrl重新键入

在访问之前添加这一点可能很重要。我使用

cy.request('POST', 'http://movinito.docker.localhost/user/login?_format=json', {name,pass});
要[成功]登录。。。正如我所说的,整个过程都是有效的,但我不能使用baseUrl,必须使用.visit命令和基于环境的完整url

这是完整的测试代码

   describe('Subcontractors section', ()=> {
        it('renders properly', ()=> {
            const { name, pass } = {name: 'info@batcave.com', pass: '123#456'}

            cy.request('POST', 'http://movinito.docker.localhost/user/login?_format=json', {
                name,
                pass
            });

            cy.visit('http://movinito.docker.localhost:3000/company/subcontractors');
//    
// I want to replace the above line with cy.visit('/company/subcontractors')
//
            cy.location('pathname').should('include', '/company/subcontractors');
            cy.get('[data-cy=page-title]').should('have.text', 'Subcontractors');
        })
    });

嗯,我阅读了关于visit()和request()的文档,这应该可以:

description('分包商部分',()=>{
它('正确渲染',()=>{
西。访问({
网址:'http://movinito.docker.localhost/user/login?_format=json',
方法:“POST”,
身体{
名称
通过
}
})
cy.参观(“/公司/分包商”)
cy.location('pathname')。应('include','/公司/分包商')
})
});
//cypress.json
{
“baseUrl”:http://react_frontend.movinito.docker.localhost:3000"
}

如果我错了,请纠正我:您提到这台正在工作:
'http://movinito.docker.localhost:3000/company/subcontractors“
但这个不是:
”http://react_frontend.movinito.docker.localhost:3000“
您正在使用两个不同的URL。如果将第二个更改为:
,会发生什么http://movinito.docker.localhost:3000“
让我重新表述一下我的意思:我希望baseUrl与传递到cy.visit函数中的字符串一致。仅使用cy.visit('/company/subscribers')会使我的测试卡在DASBCADGE上,在这里,通过完整的url,如下面所示->cy.visit(')可以正常工作。。。。我登录并被重定向到我的转包商页面。为什么这里的行为有所不同?我想使用cy.visit('/company/subscribers'),因此我可以根据环境切换baseUrl-我不想每次都键入完整的url。谢谢,但问题是服务器和重定向。。。在我的机器上是同义词,但cypress不这么看,所以我只是删除了“react_frontend”部分,它开始工作。。。不过我已经接受了你的答案-谢谢你的意见!检查,所以我们基本上回到了我昨天评论的要点:)。至少解决了。