柏树抛出未捕获的TypeError:非法调用似乎是误报

时间:2018-10-03 19:45:33

标签: javascript cypress

在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进行会话管理。

所以我有两个问题:

  1. 这可能是赛普拉斯中的错误吗?
  2. 当抛出Cypress.on uncaught:exception语句时,是否有一种方法可以捕获单击哪个特定按钮的情况,这样我就不会错过需要捕获实际错误的情况?

1 个答案:

答案 0 :(得分:0)

我不确定您是否解决了此问题。我发现了这个问题,并设法找到了解决方案。在您的示例中,您使用link_to来生成锚点a标记,但这是一个delete请求。按照惯例,它们用于get请求。一些Rails的魔法使我们能够做到这一点。为什么赛普拉斯确实对此存在问题,我不确定,但是如果将postputdelete请求还原为form_for,那应该可以解决您的问题!希望这会有所帮助!