2014-05-13 73 views
6

我建立一個web應用程序的自動化框架,旨在允許:需要Rspec的「期望」等之外的描述......它阻止

  • 自動執行任務,當然
  • 建設輕鬆測試場景

我正在使用Capybara與瀏覽器進行通信,並且我有一個包含許多輔助函數(login_to_the_back_office,create_customer等)的組件庫。

現在我希望我的組件可以在RSpec測試中獨立使用。這意味着默認情況下,包含在庫中的我的組件不會環繞describe... it...塊,但它們在測試使用它們時會處於某種程度,因此它們應儘可能經常使用expect和朋友。

我跟着rspec's .should fails (outside describe/it block) in Ruby 2?啓用should它工作(實際上只需要rspec-expectations就足夠在我的情況),但我無法弄清楚如何讓預期的工作。

我認爲expect在這裏定義https://github.com/rspec/rspec-expectations/blob/master/lib/rspec/expectations/syntax.rb但我對Ruby的元魔法的知識太有限,無法弄清楚如何讓我的課程可用。

我試過在我的班級裏包括RSpec::Expectations::Syntax,但是每當我嘗試使用時,我仍然會得到undefined method 'expect'

如何在describe... it...以外使用expect

回答

6

包括::RSpec::Matchers

class A 
    include ::RSpec::Matchers 
    def test 
    expect('1'.to_i).to eq 1 
    end 

    def failed_test 
    expect('1'.to_i).to eq 2 
    end 
end 
A.new.test 
# => true 
A.new.failed_test 
# RSpec::Expectations::ExpectationNotMetError: 
# expected: 2 
#  got: 1 
+0

耶!必須是我沒有試過的唯一模塊,包括:)謝謝! – djfm

+0

@UriAgassi +1我應該開始接受你的RSpec課程。 :D BTW恭喜http://stackoverflow.com/tags/ruby/topusers –

+1

@Kirti非常感謝你:) –