2013-01-18 22 views
5

爲了方便起見,我正在使用Rspec進行測試,以及Guard和Spork。我注意到,除非我退出並重新啓動Guard,隨機種子在運行之間不會改變。雖然這不是一個主要問題,但如果確實如此,它會很方便。我可以使用Guard/Spork更改每個在Rspec中運行的隨機化種子嗎?

任何人都知道一種方式來改變事情,以便它在每次運行測試時都使用新的種子?

+0

同樣的問題。每次運行以'seed 0隨機化'結束,即使使用spec_helper.rb中的標準隨機順序配置。你有沒有得到答案? – jordanpg

+0

我使用Spring而不是Spork(基本上是一樣的東西),而RubeOnRails的答案對我來說非常合適。 –

回答

0

你使用的是什麼版本?

我使用guard(1.6.2),rspec(2.13.0)。我沒有使用spork,但它爲我隨機化種子。

下面是我在我的spec_helper的相關位:

RSpec.configure do |config| 
    config.order = 'random' 
end 
+0

問題不在於它不會隨機排列順序(配置正常),而是因爲它只會在重新啓動spork時生成新的種子。 –

3

我加入了--order rand:$RANDOM標誌我Guardfile:

guard 'rspec', zeus: true, cli: '--color --order rand:$RANDOM' do 
    watch(...) 
end 
+2

完美運作。謝謝! –

2

是的,我下面的作品。添加到spec_helper.rb:

Spork.each_run do 
    RSpec.configuration.seed = srand && srand % 0xFFFF 
end 

From here

+0

這個解決方案適用於我(每次不同的「隨機種子」),而@ RubeOnRails沒有(總是使用種子0)。也許我的警衛調用不是直接由$ RANDOM生成的shell(如bash)運行?我使用Ruby 2.1.4,Rails 4.0.2,Guard 2.6.1;登錄shell是$ RANDOM提供的bash。 – jackr

0

如果你想在Spring上下文中隨機秩序,而且使用--seed參數補充一點:

config.seed = srand % 0xFFFF unless ARGV.any? { |arg| arg =~ /seed/ } 

spec_helper.rb

相關問題