我必须测试一些日期计算,但为此我需要NSDate()
在 Swift 中进行模拟。整个应用程序都是用 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
始终是当前日期。