Генерация примеров идентификаторов в rspec - PullRequest
0 голосов
/ 16 ноября 2011

Мне нужна помощь, чтобы выяснить, как создать уникальный идентификатор для каждого примера в моих тестах 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 ]

2 голосов
/ 16 ноября 2011

Посмотрите на ffaker для генерации случайных значений в тестах.Он может генерировать реально выглядящие случайные данные, такие как адреса электронной почты, IP-адреса, номера телефонов, имена людей и т. Д., Но также имеет базовые методы для генерации случайных строк букв и цифр.

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

В качестве альтернативывы можете использовать stdlib SecureRandom .

0 голосов
/ 16 ноября 2011

Каждый пример в вашей 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#[] должны получить ноль для значения, которое не существует.
  • Redis::BigHash#[] должен разрешать поиск нескольких ключей, возвращая массив.

Простые английские предложения, описывающие желаемое поведение.

...