2015-04-13 12 views
6

Utworzyłem kontroler, który może odczytać dane API za pomocą specjalnego adresu URL.Jak przetestować API za pomocą rspec i kapibary na szynach?

def category 
    @data = get_api_data(param1) 
end 

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

Po utworzeniu widoku, widzę wynik z przeglądarki.

Jeśli używam rspec + kapibary wykonać test Feature

visit category_path('param1') 

następnie chcę, aby potwierdzić dane API zostanie pokazany w widoku

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

Jednak wartość @data zawsze być null. Czemu? Czy konieczne jest wykonanie adresu dostępu do adresu URL aplikacji API z kodu testowego? Jeśli to konieczne, jak to zrobić? Metoda visit nie może przyjmować innych parametrów.

Odpowiedz

3

Kapibara nie jest przeznaczona do testowania interfejsów API. Powinieneś iść z Rspec i Airbone: https://github.com/brooklynDev/airborne

+0

Dziękuję. Nie chcę testować prawdziwego interfejsu API, ale chcę przetestować funkcję korzystającą z interfejsu API. Więc powinienem zrobić fałszywe dane w kodzie testowym. Znalazłem 'https: // github.com/bblimke/webmock'. –