टीडीडी करते समय समस्या होती है। परीक्षण पास के एक जोड़े के बाद, कुछ वर्ग / मॉड्यूल परिवर्तन की वापसी प्रकार। वैधानिक रूप से टाइप की गई प्रोग्रामिंग भाषा में, यदि किसी अन्य वर्ग के परीक्षणों में पिछली नकली वस्तु का उपयोग किया गया था और प्रकार परिवर्तन को प्रतिबिंबित करने के लिए संशोधित नहीं किया गया था, तो संकलन त्रुटियां होंगी।
हालाँकि गतिशील भाषाओं के लिए, वापसी के प्रकारों में परिवर्तन का पता नहीं लगाया जा सकता है और अन्य वर्ग के परीक्षण अभी भी पास होंगे। यकीन है कि एकीकरण परीक्षण हो सकते हैं जो बाद में विफल हो जाने चाहिए, लेकिन यूनिट परीक्षण गलत तरीके से पारित होंगे। क्या इससे बचने का कोई तरीका है?
एक तुच्छ नमूने के साथ अद्यतन (कुछ बना भाषा पर) ...
संस्करण 1:
Calc = {
doMultiply(x, y) {return x * y}
}
//.... more code ....
// On some faraway remote code on a different file
Rect = {
computeArea(l, w) {return Calc.doMultipy(x*y)}
}
// test for Rect
testComputeArea() {
Calc = new Mock()
Calc.expect(doMultiply, 2, 30) // where 2 is the arity
assertEqual(30, computeArea)
}
अब, संस्करण 2 पर:
// I change the return types. I also update the tests for Calc
Calc = {
doMultiply(x, y) {return {result: (x * y), success:true}}
}
... Rect फिर रनटाइम पर एक अपवाद फेंक देगा, फिर भी परीक्षण अभी भी सफल होगा।
class X
, बल्कि जिन परीक्षणोंclass Y
पर निर्भर करता हैX
और इस प्रकार उत्पादन के मुकाबले जो चलता है, उससे भिन्न अनुबंध के विरुद्ध परीक्षण किया जाता है।