2014-03-07 43 views
0

我很喜欢RSpec,但为了让我的测试更加彻底和干爽,我努力寻找一种有效的方法来测试一个完整的例子表。到目前为止,我已经通过编写参数化函数来管理这些函数,我可以从每个示例中调用这些函数,但它感觉很诡异,而且还是相当重复的。RSpec的黄瓜般的轮廓?

像黄瓜的情景东西概括和this old gem对RSpec的是什么我在寻找:

describe "Adding or multiplying two numbers" do 
    outline do 
    it "should return the sum" 
     (a + b).should == sum 
    end 

    it "should return the product" 
     (a * b).should == product 
    end 
    end 

    fields :a, :b, :sum, :product 
    values 1, 1, 2,  1 
    values -1, -2, -3,  2 
    values -1, 1, 0,  -1 
end 

不幸的是,我挂的宝石是3岁。还有其他的东西作为RSpec的一部分还是另一个完成这个目标的宝石?

+0

我最后一次检查是在'rspec'不可用和'RSpec的-core'团队表示,他们正在研究它,但这就像3-4个月前 – bjhaid

回答

1

您可以创建表行的数组,然后通过实例迭代行:

describe "Adding or multiplying two numbers" do 
    values = Array.new 
    values << {:a => 1, :b => 1, :sum => 2, :product => 1} 
    values << {:a => -1, :b => -2, :sum => -3, :product => 2} 
    values << {:a => -1, :b => 1, :sum => 0, :product => -1} 

    values.each do |value| 
     a = value[:a] 
     b = value[:b] 
     sum = value[:sum] 
     product = value[:product] 

     it "should return the sum" do 
      (a + b).should == sum 
     end  

     it "should return the product" do 
      (a * b).should == product 
     end 
    end 
end