Tôi có một hành động jQuery .animate
1 giây khởi chạy 5 giây sau khi tải trang. Tôi thiết lập một bộ đếm thời gian Sinon trong mã thử nghiệm đơn vị Jasmine của tôi và kiểm tra sau khi đánh dấu 7 giây để xem các thuộc tính hậu hoạt hình có giống như chúng không.Làm cách nào để giả mạo thời gian hoạt ảnh jQuery bằng Sinon trong thử nghiệm đơn vị Jasmine?
Nó không hoạt động đúng, vì vậy tôi đã đặt một thể hiện của hoạt hình trên trang thử nghiệm HTML Jasmine của tôi để xem điều gì đang diễn ra tốt hơn.
Trong Firefox và Chrome, tải trang, chức năng hoạt ảnh được gọi, kiểm tra đơn vị ngay lập tức không thành công, và sau đó (ngay lập tức) hoạt ảnh hiển thị rõ ràng.
Trong IE, Opera và Safari, trang tải, chức năng hoạt ảnh được gọi, kiểm tra đơn vị ngay lập tức không thành công và hoạt ảnh không bao giờ hiển thị rõ ràng.
Những gì tôi hy vọng là sau (trong tất cả các trình duyệt):
- Các tải trang, các chức năng hoạt hình được gọi, hình ảnh động hoàn thành ngay lập tức, và các đơn vị kiểm tra ngay lập tức thành công.
Nhìn vào Sinon's documentation, đó là giờ giả bao gồm các quy trình sau: setTimeout
, clearTimeout
, setInterval
, clearInterval
, Date
Tôi không biết làm thế nào jQuery tác phẩm hoạt hình, nhưng tôi tưởng tượng nó đang sử dụng CSS để chuyển tiếp và chuyển tiếp CSS không được đề cập trong số useFakeTimers
của Sinon, vì vậy tôi cho rằng đây là vấn đề. Tuy nhiên, nếu tôi đúng về vấn đề tôi vẫn cần một giải pháp.
Có lẽ tôi nên thử thứ gì khác ngoài Sinon? Jasmine của waits()
hoạt động hoàn hảo trong thử nghiệm này, nhưng là cực kỳ không thực tế cho những người thiếu kiên nhẫn như bản thân mình.
Bất kỳ đề xuất nào khác? Hãy ghi nhớ rằng tôi mới đến thử nghiệm đơn vị JS, do đó, câu trả lời mơ hồ sẽ gây nhầm lẫn cho tôi nhiều hơn giúp tôi. ; o)
Nó được một vài ngày và không ai trả lời. Những gì tôi đang làm ngay bây giờ, để giải quyết vấn đề này, đang sử dụng chức năng chờ đợi của Jasmine(). Nó đã làm việc tốt, mặc dù các bài kiểm tra không phải là tức thời mà là hoàn thành trong thời gian thực. Shucks. Vui lòng đăng bất kỳ ý tưởng nào khác mà bạn có thể có cho tôi. Cảm ơn. – gcdev
này! bạn có tìm thấy giải pháp mới cho vấn đề này không? Câu trả lời $ .fx.off hoạt động hoàn hảo, nhưng nó vẫn không phải là cách nó phải là ... –
Tôi không làm. Tôi đã sử dụng waits(). Tôi thực sự đã quên tất cả về câu hỏi này. Nhưng nhìn thấy giải pháp của Derek đơn giản hơn Alex và nó có một số phiếu thuận lợi (vì vậy nó có thể làm việc cho người khác), tôi sẽ thử nó và đánh dấu nó là câu trả lời nếu nó phù hợp với tôi. – gcdev