Freezer 1.0.0

Freezer 1.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新版本2016 年 5 月
SPM支持 SPM

Sergey Petrov 管理。



Freezer 1.0.0

Freezer

Freezer 是一个库,允许您的 Swift 测试通过模拟 NSDate 类穿越时间。

用法

调用 Freezer.start() 一次后,对 NSDate()NSDate(timeIntervalSinceNow: secs) 的所有调用都将返回被冻结的时间。

辅助函数

freeze(NSDate(timeIntervalSince1970: 946684800)) {
    print(NSDate()) // 2000-01-01 00:00:00 +0000
}

原始用法

let freezer = Freezer(to: NSDate(timeIntervalSince1970: 946684800))
freezer.start()
print(NSDate()) // 2000-01-01 00:00:00 +0000
freezer.stop()

时间调整

Freezer 会将您移动到指定的时间点,但那时时间将持续流逝。

timeshift(NSDate(timeIntervalSince1970: 946684800)) {
    print(NSDate()) // 2000-01-01 00:00:00 +0000
    sleep(2)
    print(NSDate()) // 2000-01-01 00:00:02 +0000
}

嵌套调用

Freezer 允许执行嵌套冻结/移动

freeze(NSDate(timeIntervalSince1970: 946684800)) {
    freeze(NSDate(timeIntervalSince1970: 946684000)) {
        freeze(NSDate(timeIntervalSince1970: 946684800)) {
            print(NSDate()) // 2000-01-01 00:00:00 +0000
        }
        print(NSDate()) // 1999-12-31 23:46:40 +0000
    }
    print(NSDate()) // 2000-01-01 00:00:00 +0000
}

安装

手动

只需将 freezer.swift 复制到您的 Xcode 项目中,并将其添加到测试目标中。除非 Apple 通过更改 NSDate 的内部实现而导致问题,否则此方式也很好。

许可证

MIT