2

きゅうりフレームワークで rspec の期待を使用していますが、ステップ定義レベルで使用すると問題なく見えます。

env.rb ファイルを次のように構成しました。

require 'rspec/expectations'
World(RSpec::Matchers)

私が今気づいた問題は、ステップの 1 つで使用されるオブジェクトのメソッド内で rspec を使用しようとすると、失敗することです。

E.g.
Steps_definition.rb
   service.use_rspec

class Service
   def use_rspec
       header = page.find("div#services h2").text
       header.should (be 'TV')
   end
 end

Error after execution:
 undefined method `be' for #<Service:0x2592570> (NoMethodError)

問題がどこにある可能性がありますか?

そのクラス内で Capybara.page.find(...).should have_content('...') で同様のアサーションを試しましたが、「have_content」も認識されないため、何が起こっているのかよくわかりません:S

ヒントをありがとう!

4

1 に答える 1

-1

Service クラスは World にないため、RSpec::Matchers はそこで利用できません。

次の 2 つの可能性があります。

  1. RSpec::Matchers を手動でこのクラスに含めます。
  2. このクラス (またはモジュール) を World に置きます。その後、そのメソッドはステップ定義で直接使用できるようになります。

書く:

class Helpers
  def method
    # Capybara and RSpec::Matchers are available here
  end
end
World{Helpers.new}

また

module Helpers
  def method
    # Capybara and RSpec::Matchers are available here
  end
 end
World(Helpers)
于 2012-12-15T14:58:58.110 に答える