当前位置: 首页 > 知识库问答 >
问题:

包括Capybara::DSL会使我的所有测试崩溃,参数数量错误

百里诚
2023-03-14

我仍在试图解决这个问题中概述的基本问题:Rails幻影、恶鬼和水豚在一起玩得不好

基本上我所有的测试都运行良好,但我无法从rspec测试中使用PhantomJS/Poltergeist/Capybara对屏幕进行有效渲染。

通过@theSociable.me提供的小脚本(如果我单独运行该测试),我可以通过Poltergeist/Capbybara获得我的一个屏幕的渲染!太棒了!

但是,当我将include Capybara::DSL这一行添加到测试中时,它们都会因以下错误而失败:

 Failure/Error: visit signin_path
     ActionView::Template::Error:
       wrong number of arguments (0 for 1)

如果我沿着回溯

# ./app/models/user.rb:118:in `authenticate_with_salt'
# ./app/helpers/sessions_helper.rb:67:in `user_from_remember_token'
# ./app/helpers/sessions_helper.rb:25:in `current_user'
# ./app/helpers/sessions_helper.rb:31:in `signed_in?'
# ./app/views/layouts/_header.html.erb:9:in `_app_views_layouts__header_html_erb__1456931984656374710_70286761365040'
# ./app/views/layouts/application.html.erb:12:in `_app_views_layouts_application_html_erb___847298267570209394_70286745935080'
# ./spec/requests/parties_spec.rb:22:in `block (2 levels) in <top (required)>'

我的访问登录路径线路似乎有问题

…你知道为什么在我的项目中加入Capybara::DSL会突然导致认证/登录方面的所有这些大规模失败吗?

谢谢

共有1个答案

田德运
2023-03-14

戴夫,我得看看你的请求规范的内容,但很可能你正在运行水豚2。要求集成规范放置在spec/特性中,而不是spec/请求中。

规范/请求现在保留给API测试(直接GET请求、状态html" target="_blank">代码和重定向断言等)。)这就是为什么它不会自动接收水豚DSL——而任何放在规范/特性内的规范都会。

我们在尝试让我们的请求规范访问Capybara DSL时遇到了类似的问题,因为我们需要这样做(尽管我不认为这是个好主意)。这就是我最终得到的解决方案,它对我们有效。

您不需要将Capybara DSL包含在全局范围内,而是需要将其包含在RSpec配置块中,如下所示:

# spec/spec_helper.rb
RSpec.configure do |config|
  config.include Capybara::DSL, type: :request
end

根据我相信的目录结构,type::request部分确保DSL仅用于匹配此特定类型的测试。这似乎并没有影响到访问Capybara DSL的其他测试(例如功能规范)。

希望它能解决你的问题。

 类似资料:
  • 当我将此添加到布局中时: 并包括 然后,在onCreate()中: 而initSlider()中的setup*方法则取自此处。 但我的应用程序在onCreate()中的setcontentview崩溃,并出现以下错误消息:

  • 我有这个代码: 有时它会在完成(nil)行崩溃,并带有错误代码 线程1:EXC_BREAKPOINT(代码=1,子代码=0x102ba1774) 考虑到参数是可选的,我不知道为什么它会崩溃,我只是把零传递给它。 以下是我用于调用完成处理程序的确切代码。它位于消防库事务的完成块中: 下面是处理完成的代码 这可能与事务多次调用完成处理程序有关吗?

  • 从excel文件读取测试数据。要求:我想首先我的所有测试应该运行在相同的测试数据,即excel行,然后所有测试与另一行。 解决方案:尝试将@Factory与我的@DataProvider一起使用 问题:如果我在@dataProvider中使用核心值,那么它可以正常工作。但是当从excel动态获取时,如果给我错误:[错误]导致:java.lang.NullPointerException } 基类

  • 我已经签署了一个应用程序与我创建的标志。我已经在我的手机里安装了这个apk,这是可以的,但是当我尝试打开应用程序时,它崩溃了(没有显示任何活动),并且它没有给我看日志的机会(这个对话框没有报告按钮) 问题是我在应用程序上的签名。我已经测试了其他标志和应用程序打开完美。我不能发布任何关于创建标志的信息,但只有我可以说我使用了: 其他字段为空。 主要的问题是这个应用程序是在google play中发布

  • 问题内容: 我开始使用Selenium.WebDriver(v2.45)运行视觉测试。 作为Web驱动程序,我使用。我已经安装了Firefox38。当我尝试运行test firefox时,返回异常并显示以下消息: FF已停止工作。 有没有人有什么建议?它在前一周有效,我的测试是否因更新而崩溃? 有我的测试方法主体: 问题答案: 由于兼容性问题,Selenium 2.45无法与Firefox 38可

  • 问题内容: 在我们的项目中,我有几个JUnit测试,例如从目录中获取每个文件并对其进行测试。如果我在中实现了一种方法,那么它只会显示为可能失败或成功的一项测试。但是我对每个文件的结果都很感兴趣。如何编写一个/ 使得每个文件显示为单独的测试,例如在Eclipse的图形TestRunner中?(为每个文件编写显式测试方法不是一种选择。) 问题答案: 看看JUnit 4 中的 参数化测试 。 实际上,我