iOS: Testing con Quick/Nimble

Ciao a tutti cari amici di iProg, in qualche tutorial precedente vi accennai un po’ il TDD  oggi  invece vorrei presentarvi Quick/Nimble, esso e’  un behavior-driven development framework  ma cosa sara’ mai questo BDD ? Il BDD fa parte della filosofia agile e ha lo scopo di migliorare la comunicazione all’interno dell’intero team di un progetto. Lo scopo del BDD è quello di fare in modo che il team di sviluppo comprenda appieno le richieste del cliente o dell’utilizzatore finale e che quest’ultimo sia a conoscenza di ciò che il team di sviluppo ha compreso. Durante il processo di sviluppo BDD le funzionalità vengono descritte con quello che si definiscono user stories e si definiscono i criteri di accettazione. Una volta che una user story è definita, ci si concentra sui possibili scenari in cui la funzionalità viene eseguita. Lo scenario di una user story rappresenta il test di accettazione una volta che lo sviluppo della funzionalità è completato.

Per descrivere uno scenario è importante seguire uno schema in tre step rappresentati da queste tre parole chiave: given, when then.

  • Dato un determinato contesto (given)
  • Al verificarsi un determinato evento (when)
  • Deve succedere che (then)

Facciamo un esempio pratico:

User story

Un utente può vendere azioni di borsa tramite il suo account.

Test di accettazione

Dato un account con 150 azioni di Apple inc.
Quando richiedo di venderne 50
Allora il mio account conterrà 100 azioni di Apple inc.

Dopo aver  fatto questa premessa teorica passiamo alla pratica, quindi per prima cosa  create  un nuovo progetto in Xcode e installate il framework scaricate il progetto Base da qui  dopodiche’ aprite il file QuickNibleExampleTests.swift

e scrivete il seguente codice:

import UIKit
import Nimble
import Quick
@testable import QuickNibleExample
class ViewModelTest: QuickSpec {
 override func spec() {
 describe("Azioni") {
 it("deve ritornare il numero delle azioni rimanenti dopo la vendita", closure: {
 var account = Account()
 account.azioniDaVendere = 50
 account.quantitaAzioni = 150
 account.nomeAzioni = "Apple"
 expect(account.totalNumeroAzioni()) == "100"
 })
 }
 }
}

Ora provate ad effettuare il test premendo cmd+u e il test risulta essere superato, come potete notare il tutto e’ al quanto semplice per maggiori info vi consiglio di dare uno sguardo qui

Si prega di attivare i Javascript! / Please turn on Javascript!

Javaskripta ko calu karem! / Bitte schalten Sie Javascript!

S'il vous plaît activer Javascript! / Por favor, active Javascript!

Qing dakai JavaScript! / Qing dakai JavaScript!

Пожалуйста включите JavaScript! / Silakan aktifkan Javascript!