在rspec中生成示例ID

时间:2011-11-16 00:42:11

标签: ruby rspec2

我需要帮助找出如何为我的rspec测试中的每个示例生成唯一标识符。如果以下代码有效,我该怎么办?

describe 'Verify that my server' do

    @x = 1

    it "does something " + @x.to_s do
        2.should==2
    end

    it "does something else " + @x.to_s do
        2.should==2
    end

    after(:each) do
        @x+=1
    end
end

2 个答案:

答案 0 :(得分:2)

看看ffaker在测试中生成随机值。它可以生成真实的随机数据,如电子邮件地址,IP地址,电话号码,人名等,但它也有生成随机字母和数字字符串的基本方法。

Faker.numerify("###-###-###")
# => 123-456-789

或者,您可以使用stdlib的SecureRandom

答案 1 :(得分:0)

你的Rspec中的每个例子都应该完成一个句子,你通常在describe块中开始一个句子来封装相关的测试。

我从我自己的一个规范中得到了这个:

describe Redis::BigHash do
  before :each do
    @hash = Redis::BigHash.new
    @hash[:foo] = "bar"
    @hash[:yin] = "yang"
  end

  describe "#[]" do
    it "should read an existing value" do
      @hash[:foo].should == "bar"
    end
    it "should get nil for a value that doesn't exist" do
      @hash[:bad_key].should be_nil
    end
    it "should allow lookup of multiple keys, returning an array" do
      @hash[:foo, :yin, :bad_key].should == ["bar", "yang", nil]
    end
  end
end

你最终得到的句子如下:

  • Redis::BigHash#[]应该读取现有值。
  • 对于不存在的值,
  • Redis::BigHash#[]应该为nil。
  • Redis::BigHash#[]应该允许查找多个键,返回一个数组。

简单的英语句子描述了你想要的行为。