2010-07-14 20 views
5

Ho un metodo che chiama localtime per cui ho scritto un test unitario. Ho inoltrato la chiamata a localtime nel mio test in modo da conoscere le risposte previste. Fin qui tutto bene. Mi è capitato di eseguire il test dell'unità su una macchina in un fuso orario diverso e, prevedibilmente, i test falliscono, perché mancano alcune ore di pausa. Suppongo di poter determinare dinamicamente i valori attesi corretti, ma ciò sembra andare contro l'idea di conoscere la risposta prima di porre la domanda.Come utilizzare le funzioni di test chiamate localtime() in Perl?

Qualche idea su come affrontare questo? Override localtime? Sembra estremo.

Grazie!

risposta

6

Non penso ci sia alcun problema con il calcolo dei valori delle risposte in un test unitario. I test unitari dovrebbero essere abbastanza semplici da evitare errori relativi alla complessità, ma un semplice calcolo del fuso orario probabilmente non attraversa la linea.

In questo caso particolare, tuttavia, è possibile impostare il fuso orario su un valore fisso (o diversi) come parte del test. Vedi questo post di Overflow dello stack su setting time zone in Perl.

+0

tzset è stato fantastico - grazie per il puntatore! –

5

io non so esattamente che cosa i vostri requisiti sono, ma si potrebbe essere in grado di ottenere qualcosa di fatto utilizzando Test::MockTime o Time::Mock, entrambi i quali andrà a sostituire localtime e gli amici con le versioni deriso che si comportano nel modo desiderato loro di.

+0

Se tzset non era così facile da usare, Test :: MockTime sembra perfetto - grazie! –

Problemi correlati