2012-01-05 14 views
9

साथ/नकली समय मैं अपने कोडआप कैसे स्थिर है जैस्मीन BDD

new Date().getFullYear(); 

में इस तरह की एक पंक्ति है और मैं यह हमेशा एक ही वर्ष लौटना ही होगा।

क्या जैस्मीन के साथ ऐसा करने का कोई तरीका है?

धन्यवाद।

+1

क्या आप किसी अन्य वर्ग की तरह दिनांक उदाहरण विधि को बस नहीं लगा सकते? –

+0

आप कैसे करेंगे? – Cezar

+0

उनके दस्तावेज़ों में उदाहरणों के समान ही, लेकिन इसके बजाय तिथि के साथ - अब इसे आजमाएं नहीं, लेकिन मुझे लगता है कि यह वही काम करेगा। –

उत्तर

18

जावास्क्रिप्ट में आप बस अपने परीक्षण सेटअप में समारोह के ऊपर लिख सकते हैं:

Date.prototype.getFullYear = function(){return 2012} 

तुम भी एक jasmine spy इस्तेमाल कर सकते हैं:

spyOn(Date, 'getFullYear').andReturn(2012) 

एक और तरीका है अपने आप समारोह चाहते में तारीख डालने के लिए है परीक्षा। बीटीडब्ल्यू कौन सा है। टेस्टेबल कोड लिखने का सबसे अच्छा तरीका है। अपने कार्यों में नए उदाहरण न बनाएं, क्योंकि आप हमेशा न केवल अपने कोड का परीक्षण करना शुरू करते हैं बल्कि यह भी उदाहरण देते हैं।

+9

शायद 'spyOn (date.prototype,' getFullYear ') होना चाहिए। और रीटर्न (2012) '। –

+1

यह मेरे लिए काम करता है: 'spyOn (date.prototype, 'getFullYear')। और .returnValue (2012)' – Sam

+0

यदि आप फ़ंक्शन को ओवरराइट करते हैं, तो इकाई परीक्षण के बाद इसे पुनर्स्थापित करना सुनिश्चित करें ताकि ओवरलोडेड फ़ंक्शन न हो अन्य परीक्षणों, या शायद यहां तक ​​कि आवेदन के लिए रिसाव। 1. 'मूल मूल GetFullYear = Date.prototype.getFullYear', 2. परीक्षण करें, 3.' date.prototype.getFullYear = originalGetFullYear' –

2

Sinon.js नकली टाइमर।

http://sinonjs.org/docs/#clock

मैं अपने चश्मा में इस का उपयोग कर समय कोड की जाँच करने के Node.js में एक ड्रम मशीन का निर्माण किया। लेकिन मैंने इसके साथ एक और परियोजना पर भी काम किया जहां एकमात्र तरीका मैं इसे प्राप्त करने के लिए एक विशिष्ट वर्ष का उपयोग कर सकता था, मुझे लगता है कि किसी कारण से 1 9 6 9। मुझे लगता है कि यूनिक्स युग की शुरुआत है।

वैसे भी, जो लगभग एक साल पहले था, इसलिए उन्होंने शायद इसे अभी तक तय कर लिया है।

+0

यूनिक्स समय 1/1/1970 पर शुरू हुआ। यह गुरुवार था। :) – Rimian

+0

ड्रम मशीन कहां है? – Exitos