2013-04-17 53 views
1

我是新來的Ruby/Rails/rspec的等RSpec的 - 如何創建可用於測試,會自動嵌入輔助方法,「它」測試

使用rspec的2.13.1,我想創建一個模塊方法,該方法可以從我的測試中調用,從而導致隨後調用RSpec :: Core :: ExampleGroup的「it」方法。

我的模塊:

require 'spec_helper' 

module TestHelper 
    def invalid_without(symbols) 
    symbols = symbols.is_a?(Array) ? symbols : [symbols] 
    symbols.each do |symbol| 
     it "should not be valid without #{symbol.to_s.humanize}" do 
     # Gonna nullify the subject's 'symbol' attribute here 
     # and expect to have error on it 
     end 
    end 
    end 
end 

上面的代碼添加到:

spec/support/test_helper.rb 

,並在我的spec_helper.rb,在RSpec.configure塊,我增加了以下內容:

config.include TestHelper 

現在,在測試中,我做了以下操作:

describe Foo 
    context "when invalid" do 
     invalid_without [:name, :surname] 
    end 
end 

運行,我得到:

undefined method `invalid_without' for #<Class:0x007fdaf1821030> (NoMethodError) 

知道的任何幫助..

回答

3

使用shared example group

shared_examples_for "a valid array" do |symbols| 
    symbols = symbols.is_a?(Array) ? symbols : [symbols] 
    symbols.each do |symbol| 
    it "should not be valid without #{symbol.to_s.humanize}" do 
     # Gonna nullify the subject's 'symbol' attribute here 
     # and expect to have error on it 
    end 
    end 
end 

describe Foo do 
    it_should_behave_like "a valid array", [:name, :surname] 
end 
+0

我想創建一個全新的方法來實現這一點,但您的建議很好。由於我是新來的成員,因此無法投票給您...感謝您的時間。 –

+0

會發現如何,我會做:) –

+0

甜!樂意效勞! – shime