एक स्पॉक विशिष्टता में में किसी भी लाइन की उम्मीद: या तो: ब्लॉक का मूल्यांकन किया और boolean
के रूप में जोर दिया जाता है, जब तक यह वापसी प्रकार void
साथ हस्ताक्षर हैं।क्या जीबी को शून्य तरीकों से शून्य से वापस करने से रोकने का कोई तरीका है?
मैंने देखा है अजीब कुछ तरीकों किसी भी वर्ग (उदाहरण के Page
या Module
वर्गों के लिए) Navigator
से इनहेरिट पर void
के रूप में घोषित करने के लिए हो रहा है कि वहाँ।
Let कहते हैं कि हम इस तरह के उदाहरण हैं:
इस प्रकारclass NavigationSpec extends GebSpec {
def 'Collections page has a right header'() {
when:
to CollectionsPage
then:
hasHeaderText('Collections')
}
}
hasHeaderText()
विधि CollectionsPage
वर्ग के भीतर परिभाषित किया गया है:
class CollectionsPage extends Page {
static url = 'movies/collections'
void hasHeaderText(String expectedText) {
assert true
}
}
उद्देश्य पर मैं सिर्फ वहाँ पर true
जोर देते हुए कर रहा हूँ तो यह कभी नहीं करना चाहिए असफल। भले ही यह एक त्रुटि के साथ विफल:
Condition not satisfied:
hasHeaderText('Collections')
|
null
कैसे और क्यों एक void
विधि कॉल परिणाम null
के रूप में मूल्यांकन किया जाता है?
मुझे पता है कि इसे कैसे ठीक करें। विधि वापसी प्रकार boolean
के रूप में घोषित करने के लिए पर्याप्त है और true
लौटाएं।
boolean hasHeaderText(String expectedText) {
assert header.text() == expectedText
return true
}
यह हालांकि केवल शोर का कारण बनता है: यह हालांकि सभी नहीं तो दावा है निम्नलिखित के रूप में अनावश्यक return true
की तरह जोड़ा जाना आवश्यक है बदसूरत है। क्या void
विधियों से null
लौटने से Geb को रोकने का कोई तरीका है?
मैं हूँ, जाहिर है, ध्यान रखें कि इस विशेष मामले की तरह जा सकते हैं:
boolean hasHeaderText(String expectedText) {
header.text() == expectedText`
}
यह खो void
वापसी प्रकार की विषमता की व्याख्या नहीं करता, न हम ढीला के साथ सार्थक ज़ोर विफलता संदेश का उल्लेख ऐसा दृष्टिकोण
आपके उत्तर के लिए धन्यवाद। मैं आपके द्वारा लिखी गई चीज़ों से अवगत हूं, खासकर 'संपादन' नोट्स में हिस्सा। दरअसल शून्य विधि को स्पॉक के ब्लॉक में जोर देने के रूप में मूल्यांकन नहीं किया जाना चाहिए। पेज की विधि सामान्य तरीके से घोषित की जाती है, लेकिन यह मेरी धारणा भी है, कि गेब इसके साथ कुछ एएसटी जादू करता है और इस तरह अनुबंध को तोड़ देता है। विधि के बाहर 'अपेक्षित टेक्स्ट' के साथ बूलियन का उपयोग करना जो मैं प्राप्त करना चाहता हूं उससे बहुत दूर है। पावर का कहना है कि विस्तारित विफलता संदेश खो गए हैं (उदाहरण के लिए दो मानचित्रों की तुलना करने के बारे में सोचें) और जब भी विधि का उपयोग किया जाता है तो पाठ को दोहराया जाना चाहिए (डीआरवाई)। मैं इसे एक गीब बग – topr