Devo testare qualche calcolo delle date ma per farlo devo prendere in giro NSDate()
in Swift. L'intera app è scritta in Swift e mi piacerebbe anche scrivere un test.Come simulare NSDate in Swift?
Ho provato il metodo swizzling ma non funziona (o sto facendo qualcosa di sbagliato che è più probabile).
extension NSDate {
func dateStub() -> NSDate {
println("swizzzzzle")
return NSDate(timeIntervalSince1970: 1429886412) // 24/04/2015 14:40:12
}
}
prova:
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()
// ...
}
ma date
è sempre data corrente.
Perché non si spegne semplicemente l'aggiornamento automatico della data e dell'ora del sistema, si modifica la data del computer e si eseguono i test –
Eseguiamo test sul mac remoto collegato alla soluzione CI. Non voglio fare troppo casino con quel computer. –