2012-12-04 23 views
6

कहो मेरे पास है:JBehave अस्पष्ट कदम

@Given("first name is $firstName") 
@Given("first name is $firstName and last name is $lastName") 

निम्नलिखित कदम अस्पष्ट रूप में चिह्नित किया जाएगा:

Given first name is John and last name is Smith 

उद्धरण का उपयोग कर पहले पैरामीटर के चारों ओर के बिना, कैसे मैं तो यह इस कदम ठीक कर सकते हैं केवल दूसरे से मेल खाता है? दोनों मापदंडों को अलग-अलग करने के लिए उद्धरणों का उपयोग करना भी एक ही अस्पष्टता मुद्दा है।

क्या प्रत्येक पैरामीटर कितनी देर तक सीमित है? क्या कुछ ऐसे पात्र हैं जिन्हें पारित नहीं किया जा सकता है?

उत्तर

8

आप के रूप में यहाँ प्रलेखित, कदम प्राथमिकताओं का उपयोग करके इस का समाधान कर सकते हैं: http://jbehave.org/reference/stable/prioritising-steps.html

आपकी समस्या दो मापदंडों के साथ संस्करण के लिए एक उच्च प्राथमिकता सेट करके किया जा जाएगा:

@Given("first name is $firstName") 
@Given(value = "first name is $firstName and last name is $lastName", priority = 1) 

मैं अपने उदाहरण की कोशिश की और इस संयोजन के साथ, दो चरणों को अलग कर दिया गया था।

(संपादित करें: मेरी प्रारंभिक समाधान मापदंडों के लिए उद्धरण के लिए किया था, लेकिन यह बिना के रूप में अच्छी तरह से काम करता है)

+1

धन्यवाद! मुझे कदम प्राथमिकताओं के बारे में पता नहीं था। यह बहुत आसान में आ जाएगा। :) – user1877292

1

मुझे लगता है कि इस परिदृश्य इस तरह से लिखना हो सकता है:

Given first name is John 
And last name is Smith 

और कदम:

@Given("first name is $firstName") 
@And("last name is $lastName") 

आप व्यक्ति वस्तु पहले में एक सेट नाम और अंतिम नाम बना सकते हैं " @ दिए गए "कदम।

@And("the email is $email") 
public addEmail(String email) { 
    person.setEmail(email); 
} 

तो इस समस्या होने वाला नहीं है और आप कोड अधिक पुन: प्रयोज्य हो जाएगा:
यदि आप किसी अन्य प्रॉपर्टी जोड़ते हैं, ईमेल की तरह की जरूरत है, तो आप सिर्फ एक और कदम बनाने की जरूरत है।

+0

क्षमा करें, मुझे लगता है कि यह है कि मैं क्या चाहता था का एक उदाहरण के एक बुरा सरलीकरण किया गया था। मुझे बेहतर अलग तरीके से व्यक्त करने के लिए कोशिश करते हैं: @Given ("पहला नाम $ firstName के साथ एक व्यक्ति") @Given ("पहला नाम $ firstName और अंतिम नाम $ lastName के साथ एक व्यक्ति") जहां इन चरणों का बुला नए व्यक्ति वस्तुओं का निर्माण करेगा। फिर निम्नलिखित चरण को संदिग्ध के रूप में चिह्नित किया जाएगा: पहले नाम वाले व्यक्ति को देखते हुए जॉन और अंतिम नाम स्मिथ यह या तो इसे पहले नाम "जॉन और अंतिम नाम स्मिथ" या पहले नाम "जॉन" नाम से एक व्यक्ति बनाने के रूप में पार्स कर सकता है "और अंतिम नाम" स्मिथ "। – user1877292

+0

आपको ऑब्जेक्ट को सभी "दिए गए" चरणों में बनाने की आवश्यकता नहीं है, आप गुणों में नाम और अंतिम नाम स्टोर कर सकते हैं और "कब" चरण ऑब्जेक्ट बना सकते हैं। मैं इस (समान) का उपयोग [उदाहरण] में करता हूं (http: // github।कॉम/पेंटिनो/स्वचालित-ट्रेसिबिलिटी-उदाहरण/ब्लॉब/मास्टर/स्क्रमफोर्ज-स्वीकृति-टेस्ट-जेबहेव/src/test/java/org/scrumforge/स्वीकृति/परीक्षण/CreateUserStoryTest.java) इस [परिदृश्य] के साथ (https: // github.com/piantino/automated-traceability-example/blob/master/scrumforge-acceptance-test-jbehave/src/test/resources/stories/manage_resources/scrum_team/CreateUser.story)। मुझे लगता है कि यह दृष्टिकोण अधिक पुन: प्रयोज्य है। –

+0

हाँ, मुझे समझ में आया कि मैं इसे काम करने के लिए इसे अलग-अलग चरणों में कैसे विभाजित कर सकता हूं, लेकिन मैं देखना चाहता था कि कोई तरीका था, मैं इसे एक कदम के रूप में रख सकता था क्योंकि मैं बहुत सारी वस्तुओं को बनाना चाहता हूं, कुछ विशेषताओं के साथ सेट जरूरत है। – user1877292

0

क्या मेरे लिए काम किया

डॉलर चिह्न ($) के लिए प्रतिस्थापन टखने कोष्ठक (<>) था, यानी
@Given("a person with first name <firstName>") 

और

@Given("a person with first name <firstName> and last name <lastName>") 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^