現在、「ページオブジェクト」パターンを使用するようにキュウリテストの全負荷をリファクタリングしていますが、RSpecマッチャーの使用で多くの問題が発生しています。
私が持っている既存のステップは次のとおりです。
Then /^I should (not )?see the following alerts:$/ do |negate, alerts|
expectation = negate ? :should_not : :should
within(ALERT_TABLE_ID) do
alerts.hashes.each do |alert|
page.send(expectation, have_content(alert["Original ID"]))
end
end
end
私のリファクタリングされたステップは次のとおりです。
Then /^I should (not )?see the following alerts:$/ do |negate, alerts|
expectation = negate ? :should_not : :should
@alert_reporting_panel = AlertReportingPanel.new(Capybara.current_session)
@alert_reporting_panel.verify_contents expectation, alerts
end
そして私のパネルオブジェクトは次のとおりです。
class AlertReportingPanel
def initialize(session)
@session = session
end
def verify_contents(expectation, alerts)
@session.within(ALERT_TABLE_ID) do
alerts.hashes.each do |alert|
@session.send(expectation, have_content(alert["Original ID"]))
end
end
end
end
残念ながら、私は取得しundefined method 'have_contents' for #<AlertReportingPanel:0x3f0faf8> (NoMethodError)
ます。私はクラスのトップに
追加しようとしました、そしてまたメソッドを完全に修飾しようとしました: 、しかし私はちょうど得る。 require 'rspec'
have-content
Capybara::RSpecMatchers::HaveMatcher.have_content
uninitialized constant Capybara::RSpecMatchers (NameError)
私はRubyにかなり慣れていないので、これを修正するのは簡単だと確信しています...しかし、自分で解決することはできないようです。
助けてください。ありがとうございました。