2015-04-13 12 views
6

Ho creato un controller in grado di leggere dati API con un URL speciale.Come testare un'API con rspec e capybara su rotaie?

def category 
    @data = get_api_data(param1) 
end 

def get_api_data(param1) 
    "http://my_api_url/param1=#{param1}" 
end 

Dopo aver creato una vista, posso vedere il risultato dal browser.

Se uso rspec + capibara per fare il test funzione

visit category_path('param1') 

Poi voglio confermare un dato API sarà mostrato in vista

expect(page).to have_field('name', with: 'aaa') 

Ma il valore @data essere sempre null. Perché? È necessario eseguire un post di accesso con url api dal codice di prova? Se è necessario, come fare? Il metodo visit non può accettare altri parametri.

risposta

3

Capybara non è progettato per il test delle API. Si dovrebbe andare con Rspec e Airbone: https://github.com/brooklynDev/airborne

+0

Grazie. Non voglio testare l'API reale, ma voglio testare una funzionalità che utilizza un'API. Quindi dovrei fare i dati falsi nel codice di test. Ho trovato 'https: // github.com/bblimke/webmock'. –