Harapan Rspec di Mentimun: metode tidak terdefinisi 'menjadi' saat digunakan di dalam kelas

Saya menggunakan ekspektasi rspec dalam kerangka mentimun dan ekspektasi tersebut terlihat baik-baik saja saat digunakan pada tingkat definisi langkah.

Saya telah mengkonfigurasi file env.rb saya dengan:

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

Masalah yang saya perhatikan sekarang adalah jika saya mencoba menggunakan rspec di dalam metode objek yang digunakan di dalam salah satu langkah maka saya gagal.

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)

Adakah yang tahu di mana letak masalahnya?

Saya sudah mencoba pernyataan serupa dengan Capybara.page.find(...).should has_content('...') di dalam kelas itu dan 'have_content' juga tidak dikenali, jadi tidak begitu yakin apa yang terjadi :S

Terima kasih banyak atas tipnya!


person mickael    schedule 15.12.2012    source sumber
comment
mungkin Anda membutuhkan World(RSpec::Expectations) ?   -  person rogerdpack    schedule 21.10.2016


Jawaban (1)


Kelas Layanan Anda tidak ada di Dunia sehingga RSpec::Matchers tidak tersedia di sana.

Anda memiliki dua kemungkinan:

  1. Sertakan RSpec::Matchers secara manual ke kelas ini.
  2. Masukkan kelas (atau modul) ini ke Dunia. Setelah itu metodenya akan langsung tersedia dalam definisi langkah.

Menulis:

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

or

module Helpers
  def method
    # Capybara and RSpec::Matchers are available here
  end
 end
World(Helpers)
person Andrei Botalov    schedule 15.12.2012
comment
Hai Andrey. Tidak yakin di mana masalah saya saat itu. Saya telah membuat modul yang saya masukkan ke Dunia tempat saya membuat objek layanan, sehingga metode layanan tersedia dalam langkah-langkahnya, itu baik-baik saja. Masalah yang saya alami (bahkan setelah mencoba saran di atas) adalah #Capybara dan Rspec::Matchers sepertinya tidak dikenali di dalam kelas. Jika saya mencoba: include RSpec::Matchers di dalam kelas maka saya mendapatkan kesalahan berikut undefined method baru' untuk RSpec::Matchers::Pretty:Module Error saat membuat formatter: cantik (NoMethodError)` - person mickael; 15.12.2012
comment
@mickael itu berhasil untuk saya. Cobalah untuk memulai dari awal. Capybara dan RSpec::Matchers tersedia di dalam modul atau kelas jika dimasukkan ke Dunia - person Andrei Botalov; 15.12.2012