我需要测试一些日期计算,但是为了这样做,我需要在Swift中模拟NSDate()
。整个应用程序都是用Swift编写的,我也想在其中编写测试。
我尝试过方法交换,但它不起作用(或者更可能是我做错了什么)。
extension NSDate {
func dateStub() -> NSDate {
println("swizzzzzle")
return NSDate(timeIntervalSince1970: 1429886412) // 24/04/2015 14:40:12
}
}
测试:
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()
// ...
}
但是date
始终为当前日期。