2015-09-10 29 views
5

Nella mia classe personalizzata WLNetworkClient ho dovuto implementare tale metodo:Come testare init richiesto (coder :)?

required init(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

Non ho bisogno di usare questo, ma vorrei provare questo per fare copertura del codice 100%. Sai come ottenere questo?

Ho provato a modo seguente senza successo:

let nc = WLNetworkClient(coder: NSCoder()) 
XCTAssertNotNil(nc) 

risposta

1

Here è la risposta che dovrebbe aiutare a:

let cd = NSKeyedUnarchiver(forReadingWithData: NSMutableData()) 
let c = CustomTextField(coder:cd) 
+0

Purtroppo non funziona: '*** - [NSKeyedUnarchiver initForReadingWithData:]: i dati sono vuoti; hai dimenticato di inviare -finishEncoding a NSKeyedArchiver? ' –

+0

Questo ha funzionato per me con un UIButton – Jeremiah

3

Codice di produzione:

required init?(coder: NSCoder) { 
    return nil 
} 

prova:

func testInitWithCoder() { 
    let archiverData = NSMutableData() 
    let archiver = NSKeyedArchiver(forWritingWithMutableData: archiverData) 
    let someView = SomeView(coder: archiver) 
    XCTAssertNil(someView) 
} 
+0

Suoni buoni;) Ci provo domani e lo sai ... –

+0

@ BartłomiejSemańczyk Funzionava? –

+0

Questo non funziona per me in una situazione leggermente diversa. Sto chiamando super.init (coder: aDecoder) come seconda linea e smette di funzionare su quella linea. Nessun incidente non finisce il test. – Jeremiah

Problemi correlati