2010-07-14 38 views
5

Tôi có một phương pháp gọi localtime mà tôi đã viết một bài kiểm tra đơn vị cho. Tôi gọi điện đến số localtime trong bài kiểm tra của mình để tôi biết câu trả lời mong đợi. Càng xa càng tốt. Tôi xảy ra để chạy thử nghiệm đơn vị trên một máy tính trong một múi giờ khác nhau, và dự đoán, các bài kiểm tra thất bại, bởi vì họ đang có một số giờ tắt. Tôi cho rằng tôi có thể tự động xác định các giá trị kỳ vọng chính xác nhưng điều đó dường như đi ngược lại ý tưởng biết câu trả lời trước khi đặt câu hỏi.Làm thế nào để đơn vị chức năng kiểm tra gọi localtime() trong Perl?

Bất kỳ suy nghĩ nào về cách tiếp cận điều này? Ghi đè localtime? Điều đó có vẻ cực đoan.

Cảm ơn!

Trả lời

6

Tôi không nghĩ rằng có bất kỳ vấn đề nào với việc tính giá trị của câu trả lời trong bài kiểm tra đơn vị. Các xét nghiệm đơn vị phải đủ đơn giản để tránh các lỗi liên quan đến phức tạp, nhưng việc tính toán múi giờ đơn giản có thể không vượt qua được dòng.

Trong trường hợp cụ thể này, bạn có thể đặt múi giờ thành giá trị cố định (hoặc một số) như một phần của thử nghiệm. Xem bài đăng Chồng tràn này về setting time zone in Perl.

+0

tzset thật tuyệt vời - cảm ơn con trỏ! –

5

Tôi không chắc chắn yêu cầu của bạn là gì, nhưng bạn có thể hoàn thành công việc bằng cách sử dụng Test::MockTime hoặc Time::Mock, cả hai sẽ thay thế localtime và bạn bè với các phiên bản được mô phỏng hoạt động theo cách bạn muốn.

+0

Nếu tzset không quá dễ sử dụng, Test :: MockTime có vẻ như nó sẽ hoàn hảo - cảm ơn! –

Các vấn đề liên quan