【问题标题】:Capybara custom Methods, where should these go?Capybara 自定义方法,这些应该去哪里?
【发布时间】:2017-07-14 00:21:00
【问题描述】:

我一直在努力寻找如何使用 Capybara 从 react-select 库中查找和选择,直到我偶然发现了这个: https://github.com/JedWatson/react-select/issues/832

超级有用,而且确实有效,有人提到了一种很好的方法,我认为包含该方法定义会很有用。

但是在 Rails 中,这样的东西会去哪里?理想情况下,您不希望它仅在该测试文件中定义。 rails_helperspec_helper 文件之类的文件是否合适?还是应该有人为这些辅助函数制作单独的 test_helper 文件? (现在我知道test_helper 文件,因为我在rails_helper 中设置了驱动程序

我不太确定“自动化”最佳约定是什么?

【问题讨论】:

    标签: ruby-on-rails capybara


    【解决方案1】:

    当使用 RSpec 你的rails_helper.rb 通常有一行

    Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
    

    这会在启动时加载 spec/support 目录中的所有 rb 文件。要添加您的方法,您需要添加一个新文件,例如 spec/support/capybara_react_helper.rb 并在其中放置

    module CapybaraReactHelepr
      def a_helper_method(...)
        ...
      end
    
      def another_helper(...)
        ...
      end
    end
    

    然后在您的 RSpec 配置中(通常是在您的 rails_helper.rb 中),您可以将这些方法包含到功能测试中

    RSpec.configure do |config|
       ...
       config.include CapybaraReactHelper, type: :feature
       ...
    end
    

    【讨论】:

    • type: feature 到底有什么作用?我习惯于在测试中看到这一点,还是仅在基于“功能”的测试中包含该模块?
    • @msmith1114 在定义设置测试类型(模型、视图、控制器、请求、功能等)的测试时,或者您可以根据定义测试的目录自动设置它. 当在include 语句中使用时,它告诉它何时包含该模块——在这种情况下,Capybaras DSL 通常仅用于功能规范,因此只有在相同类型的测试中包含辅助方法才有意义。
    猜你喜欢
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    相关资源
    最近更新 更多