在rails(5.1.6)项目中,当Cypress(3.1.0)测试套件单击“注销”链接时,将引发“未捕获的TypeError:非法调用”错误。输出继续说明“此错误源于您的应用程序代码,而不是赛普拉斯。”
在单击时跟踪我的本地服务器日志,并在chrome javascript控制台中进行同样的操作,因此我找不到任何抛出的错误。当应用程序在开发模式下运行时,单击注销按钮不会产生任何错误。作为进一步的测试措施,我可以将环境设置为“测试”模式,并与“注销”按钮进行交互,而不会发生意外。
我已在测试中添加了此位以克服错误:
Cypress.on('uncaught:exception', function (err, runnable) {
//debugger;
return false;
});
链接导轨生成如下:
<a class="btn btn-outline-light my-2 my-sm-0" rel="nofollow" data-method="delete" href="/logout">Log out</a>
我不愿意宣称这是赛普拉斯中的错误,但是我的代码似乎很简单,据我所知,当赛普拉斯或其他方式单击此链接时,不会抛出任何错误。
我正在使用Devise进行会话管理。
所以我有两个问题:
答案 0 :(得分:0)
我不确定您是否解决了此问题。我发现了这个问题,并设法找到了解决方案。在您的示例中,您使用link_to
来生成锚点a
标记,但这是一个delete
请求。按照惯例,它们用于get
请求。一些Rails的魔法使我们能够做到这一点。为什么赛普拉斯确实对此存在问题,我不确定,但是如果将post
,put
,delete
请求还原为form_for
,那应该可以解决您的问题!希望这会有所帮助!