![](/img/trans.png)
[英]Unused parameters passed to 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 的鷹眼指路——我不知道require
和include
位於 class 的祖先中的位置有多重要。
首先,我正在使用的實驗gem的作者告訴我,我的手冊中包含的 Capybara 類是多余的; 它們已經包含在 gem 中。 我刪除了 gem 以隔離問題,該問題在添加 gem 之前已經存在。
它的核心是, require capybara/rails
, require capybara/minitest
並在我的test_helper.rb
中include Capybara::DSL
,但在我單獨的CapybaraIntegrationTestCase.rb
中包含 Capybara include Capybara::Minitest::Assertions
似乎已經放置了調用堆棧亂序。 將所有 Capybara 需要和包含到CapybaraIntegrationTestCase
清除了這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.