मैं स्कैला (जावा से) में नया हूं और मुझे टीडीडी/बीडीडी विकसित करना पसंद है। तो स्कैला के बारे में बहुत कुछ जानने से पहले मैं पहले से ही स्केलेटेस्ट में डाला गया हूं।स्कैला - यूनिट परीक्षण सेटअप (एक्सेस मॉडिफायर क्वालीफायर का उपयोग करें?)
मैं सोच रहा हूं कि यूनिट परीक्षण के लिए एक अच्छी पहुंच रणनीति क्या है, इस दृष्टिकोण से कि आप जितना संभव हो परीक्षण करना चाहते हैं।
मान लीजिए कि मेरे पास एक कक्षा विश्व है जिसे मैं परीक्षण करना चाहता हूं और एक क्लास एजेंट जो दुनिया के बारे में सब कुछ नहीं जानना चाहिए।
package program {
package world {
class World {
private var notForAgent
def forAgentDuringActing
// forAgentDuringActing has an important side effect in notForAgent
}
}
package agent {
class Agent
// would call World.forAgentDuringActing
}
package world.test {
class WorldSpec extends FunSpec {
describe("The world") {
it("should have side-effect behaviour when the agent acts on it") {
// ... the test ...
}
}
}
}
}
ध्यान दें कि ये पैकेज घोषणाएं मेरे लिए पवित्र नहीं हैं। मैं वास्तव में क्या चाहूंगा, यह है कि वर्ल्डस्पेक दुनिया के लिए एक साथी वस्तु की तरह कुछ होगा, ताकि वह दुष्प्रभाव के लिए परीक्षण कर सके।
मैंने सोचा कि शायद मॉडिफायर क्वालीफायर एक्सेस करने में मदद मिलेगी। मैं private[world] notForAgent
कह सकता था, लेकिन वास्तव में यह मेरी अपेक्षा से अधिक पहुंच है। मैं वास्तव में क्या चाहता हूं private[this, test.WorldSpec] notForAgent
जैसा कुछ है, लेकिन मुझे नहीं लगता कि कई क्वालीफायरों की अनुमति है।
यह टेस्ट करने योग्य बनाने के लिए आप क्या करेंगे? वैकल्पिक रूप से, क्या आप संकेत दे सकते हैं कि मेरे विचार गलत दिशा में कहां जाते हैं?
पेज। मुझे बयान "निजी परीक्षण कभी नहीं" पता है। लेकिन मुझे यह भी पता है कि "परीक्षण कोड से ही अधिक महत्वपूर्ण है। परीक्षण के लिए आवश्यक होने पर एक्सेस मॉडिफायर को बदलें"। हालांकि, मैं इस धागे में उस चर्चा से बचना चाहता हूं।
हाँ, मुझे इसके बारे में पता था। हालांकि, जिस राज्य में मैं परीक्षण करना चाहता हूं वह एक वैर में है, न कि एक विधि। फिर भी, आपका जवाब वास्तव में प्रयोग योग्य है, क्योंकि स्पष्ट रूप से स्कैला भी एक निजी मूल्य के लिए गेटटर विधि बनाता है। तो आप इस तरह से परीक्षण कर सकते हैं। हालांकि इसे एक अधिक प्राकृतिक तरीके से अनुमति देने का कोई तरीका नहीं होगा (जैसे कि साथी वस्तु के मामले में)? – qkrijger
हम्म, मैं आपके उत्तर को वोट नहीं दे सकता क्योंकि मेरे पास अभी तक 15 प्रतिष्ठा नहीं है ... :( – qkrijger
अब जब मैं इस फैशन में कुछ परीक्षण लागू कर रहा हूं तो मुझे कहना होगा कि हवा थोड़ा कोड-सुगंधित हो गई है। एक बात के लिए, यह परीक्षण एक रिफैक्टर के बाद टूट जाता है (जो एक बड़ा सौदा नहीं है, लेकिन यह भी साफ नहीं है)। मुझे किसी के पास सेटअप में सुधार करने के तरीके पर विचार है, जो भी अच्छा होगा। मुझे वास्तव में एक विचार पसंद है साथी की तरह यूनिट टेस्ट ऑब्जेक्ट, लेकिन मुझे नहीं पता कि इस तरह कुछ हासिल करने के लिए (यदि संभव हो) – qkrijger