2011-03-24 19 views
12

पर एक आरएसपीसी परीक्षण केस छोड़ें मैं कई अलग-अलग बाजारों में मौजूद वेबसाइट उत्पाद के विरुद्ध आरएसपीसी परीक्षण चला रहा हूं। प्रत्येक बाजार में विशेषताओं के विभिन्न संयोजन होते हैं, आदि। मैं परीक्षण लिखने में सक्षम होना चाहता हूं जैसे कि वे रनटाइम पर खुद को छोड़ दें, जिसके आधार पर वे किस बाजार/पर्यावरण के खिलाफ चल रहे हैं। एक अलग बाजार में चलाने पर परीक्षण विफल नहीं होना चाहिए, न ही वे पास होना चाहिए - वे बस लागू नहीं हैं।रनटाइम

दुर्भाग्य से, एक परीक्षण को चिह्नित करने के लिए एक आसान तरीका प्रतीत नहीं होता है। मैं "लंबित" ब्लॉक को इंजेक्ट करने की कोशिश किए बिना ऐसा करने के बारे में कैसे जाउंगा (जो कि वैसे भी सटीक नहीं हैं?)

उत्तर

17

exclusion filters का उपयोग करें।

describe "market a", :market => 'a' do 
    ... 
end 
describe "market b", :market => 'b' do 
    ... 
end 
describe "market c", :market => 'c' do 
    ... 
end 

RSpec.configure do |c| 
    # Set these up programmatically; 
    # I'm not sure how you're defining which market is 'active' 
    c.filter_run_excluding :market => 'a' 
    c.filter_run_excluding :market => 'b' 
    # Now only tests with ":market => 'c'" will run. 
end 

या बेहतर अभी भी implicit filters का उपयोग करें।

describe "market a", :if => CurrentMarket.a? do # or whatever 
    ... 
end 
+0

लागू फ़िल्टर जाने के तरीके की तरह लगते हैं। मुझे हैरान है कि टेस्ट के लिए फॉर्मेटर को रिपोर्ट करने का कोई तरीका नहीं है कि इसे बाहर रखा गया था: / – andrewdotnich