如何测试内部调用 NSDate() 的方法?

How can I test the method that has NSDate() call inside?

extension NSDate {
    class func todayDateFromMidnightForSeconds(seconds: NSTimeInterval) -> NSDate {
        let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
        let startOfTheCurrentDay = calendar.startOfDayForDate(NSDate())

        return startOfTheCurrentDay.dateByAddingTimeInterval(seconds)
    }
}

如何在我的自定义方法中模拟我的 NSDate() 以正确地测试它?

您只需从您的方法中删除 "class" 声明并将 NSDate() 替换为 self 如下:

extension NSDate {
    func dateFromMidnightForSeconds(seconds: NSTimeInterval) -> NSDate {
        return NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!.startOfDayForDate(self).dateByAddingTimeInterval(seconds)
    }
}

NSDate().dateFromMidnightForSeconds(60)  // "Jun 12, 2015, 12:01 AM"