Tôi phải kiểm tra một số tính toán ngày nhưng để làm như vậy tôi cần phải thử NSDate()
trong Swift. Toàn bộ ứng dụng được viết bằng Swift và tôi cũng muốn viết bài kiểm tra trong đó.Làm thế nào để giả lập NSDate trong Swift?
Tôi đã thử phương pháp nổi loạn nhưng nó không hoạt động (hoặc tôi đang làm điều gì đó sai có nhiều khả năng).
extension NSDate {
func dateStub() -> NSDate {
println("swizzzzzle")
return NSDate(timeIntervalSince1970: 1429886412) // 24/04/2015 14:40:12
}
}
kiểm tra:
func testCase() {
let original = class_getInstanceMethod(NSDate.self.dynamicType, "init")
let swizzled = class_getInstanceMethod(NSDate.self.dynamicType, "dateStub")
method_exchangeImplementations(original, swizzled)
let date = NSDate()
// ...
}
nhưng date
luôn là ngày hiện tại.
Tại sao bạn không chỉ cần tắt cập nhật ngày và giờ của hệ thống tự động, thay đổi ngày của máy tính và thực hiện thử nghiệm của bạn –
Chúng tôi chạy thử nghiệm trên mac từ xa được nối với giải pháp CI. Tôi không muốn gây rối với máy tính đó quá nhiều. –