Test esterni dell'API Rails Rest
Domanda
Sto creando un livello di servizio Web REST su un'app Rails che verrà utilizzata da un'applicazione Iphone.Il formato della risposta è XML.
Vorrei creare alcuni test di accettazione che dovrebbero essere esterni allo stack dei binari (e dovrebbero testare tutto, incluso il server http).Gli scenari di test sono piuttosto complessi e implicano il processo di ricerca/pubblicazione/revisione di un ordine.Quale sarebbe la soluzione migliore per raggiungere questo obiettivo?
UN.Script Ruby che utilizza curl/curb per recuperare la richiesta e Hpricot per analizzare la richiesta
B.Selenio
C...
Sarebbe anche bello che questi test potessero essere usati come test di integrazione (quindi eseguiti su ogni commit git).Quale soluzione di integrazione consiglieresti?
UN.Integrità
B.Regolazione automatica della velocità
C.qualcos'altro
Soluzione
Ho usato tre approcci nel corso degli ultimi anni
Risorsa attiva
Ho scoperto che questo era troppo preoccupato di sembrare un record attivo per essere un'ottima soluzione.In alcuni casi ho dovuto patcharne alcune parti affinché funzionassero come vorrei che si comportasse un client REST.
Resto-cliente
Questo gemma È Molto bene - Ben documentato e funziona come previsto.L'ho combinato con il mio semplice DSL e ha funzionato meglio di un framework di test generico
XML su HTTP
Lo uso per testare le prestazioni.Molto flessibile ma la curva di apprendimento è più alta rispetto a Rest-client.Se segui questo approccio potresti usare il file Rete::HTTP classe principale o il Gemma HTTParty (Non l'ho provato ma sembra fantastico>
Una risorsa davvero valida è questa Net::HTTP cheat-sheet
Per i test ad hoc ho trovato anche il file Componente aggiuntivo Rest Client per Firefox molto utile.
Altri suggerimenti
Usa selenium-rc in modalità Ruby e sarai un campeggiatore felice.Webrat/Cecumber lo fa già per te, quindi puoi semplicemente inserirlo in un secondo progetto ed eseguire i test in questo modo, tutto ciò che dovrai fare è sovrascrivere l'host (quindi invece di localhost utilizzerai il tuo dominio).
Per quanto riguarda CI, temo di non conoscere il migliore.
non puoi assolutamente intendere l'integrità di mks... se è così, la risposta è tutt'altro.CC è un buon strumento CI.veramente buono.