簡體   English   中英

Capybara Minitest `has_field?` 工作,但 `assert_field` 給出錯誤“未使用的參數傳遞給 Capybara::Queries::SelectorQuery”

[英]Capybara Minitest `has_field?` works, but `assert_field` gives error "unused parameters passed to Capybara::Queries::SelectorQuery"

在我的頁面中,我有一個這樣的鏈接:

<input value="" data-autofocus="true" class="form-control" 
       type="text" name="user[login]" id="user_login" />

將 Capybara 與 Minitest 一起使用,driver:rack_test,以下選擇器會找到輸入,但並行斷言會出錯 [已編輯以包含跟蹤]:

(ruby) has_field?("user_login")
true
(ruby) assert_field("user_login")
eval error: Unused parameters passed to Capybara::Queries::SelectorQuery : [:field, "user_login"]
/home/vagrant/.rvm/gems/ruby-3.0.4/gems/capybara-3.37.1/lib/capybara/queries/selector_query.rb:52:in `initialize'
  /home/vagrant/.rvm/gems/ruby-3.0.4/gems/capybara-3.37.1/lib/capybara/node/matchers.rb:842:in `new'
  /home/vagrant/.rvm/gems/ruby-3.0.4/gems/capybara-3.37.1/lib/capybara/node/matchers.rb:842:in `_verify_selector_result'
  /home/vagrant/.rvm/gems/ruby-3.0.4/gems/capybara-3.37.1/lib/capybara/node/matchers.rb:110:in `assert_selector'
  /home/vagrant/.rvm/gems/ruby-3.0.4/gems/capybara-3.37.1/lib/capybara/session.rb:771:in `assert_selector'
  /home/vagrant/.rvm/gems/ruby-3.0.4/gems/capybara-3.37.1/lib/capybara/dsl.rb:52:in `call'
  /home/vagrant/.rvm/gems/ruby-3.0.4/gems/capybara-3.37.1/lib/capybara/dsl.rb:52:in `assert_selector'
  /home/vagrant/.rvm/gems/ruby-3.0.4/gems/capybara-3.37.1/lib/capybara/minitest.rb:288:in `block (2 levels) in <module:Assertions>'
  (rdbg)//vagrant/mo/test/integration/capybara_student_test.rb:1:in `block in test_creating_drafts'
nil

Capybara Capybara::Minitest::Assertions#assert_field的 rubydocs 說該方法是直接從Node::Matchers#has_field? . 我想知道為什么它不起作用?

編輯:遲來的意識到這可能是相關的......我在測試中包括 Capybara::Minitest::Assertions,並使用 Sean P. Doyle 的 gem ActionDispatch::Testing::Integration::Capybara在集成測試中使用 Capybara。

感謝@ThomasWalpole 的鷹眼指路——我不知道requireinclude位於 class 的祖先中的位置有多重要。

首先,我正在使用的實驗gem的作者告訴我,我的手冊中包含的 Capybara 類是多余的; 它們已經包含在 gem 中。 我刪除了 gem 以隔離問題,該問題在添加 gem 之前已經存在。

它的核心是, require capybara/railsrequire capybara/minitest並在我的test_helper.rbinclude Capybara::DSL ,但在我單獨的CapybaraIntegrationTestCase.rb中包含 Capybara include Capybara::Minitest::Assertions似乎已經放置了調用堆棧亂序。 將所有 Capybara 需要和包含到CapybaraIntegrationTestCase清除了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM