2013-09-26 21 views
1

黃瓜,我有這樣的事情Rspec中的標籤可以是「或」還是「或」?

@do_this 
@de @fr @it @us 
Scenario: Do something irrelevant 
Given ... 
When ... 
Then 

@do_that 
@de @fr @it @us 
Scenario: Do a different irrelevant thing 
Given ... 
When ... 
Then 

這是可以做到像cucumber -t @de -t @do_this,所以僅匹配這兩個標籤的場景將被運行。不過,我似乎無法在Rspec中獲得相同的行爲。在上面的示例中,只有第一種情況纔會運行,即使第二種情況也有@de標記。

背景:我有在許多國家推出了一個平臺,而不是所有的功能均在每個國家都可獲得。所以最好的是我可以相應地標記場景,然後從命令行調用各個場景。我目前正在從黃瓜切換到Rspec的過程中,原因有幾個,但這是目前唯一讓我失望的事情。當然,我也接受其他關於如何解決這個問題的建議。

短版:我想調用Rspec的單項測試誰匹配兩個或多個標籤。

回答

4

RSpec的標籤表達式是唯一的或運算包容和相與排除,所以你一般想要的東西,你不能這樣做。此外,似乎可以用要麼標記過濾器或例子描述的過濾器,但不能同時的,所以我認爲那些結合兩種技術是出來爲好。 (也許有人可以糾正我)。

但是,如果你有一個有限/結構的情況下你的榜樣暗示,我認爲你可以做到以下幾點:

  • 定義一個布爾標記爲每種語言和使用傳統的包含過濾器
  • 定義do標籤,其值爲this,that等,並使用lambda排除過濾器,該排除過濾器將排除所有值但您需要的值爲

如果你做到上面,你就可以使指定包含任何你想你想

無論do值的子集語言的例子。然而,我懷疑有一種方法所以我覺得你只限於使用了配置選項的方法來指定要在命令行中lambda表達格式。無論如何,請參閱http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/Configuration:filter_run_excluding瞭解底層功能的說明。

這是一個很大的侷限性,我知道了。這似乎是RSpec可以很容易地擴展的一個領域,所以也許我們會在未來看到擴展。

相關問題