To jest problem, który od pewnego czasu przeszkadza mi. Buduję funkcję API, która powinna otrzymywać dane w jsonie i odpowiedź w jsonie. Moje testy kontrolerów działają bez zarzutu (Odkąd zaznaczam, że dane się tam dostają, już dekoduję z JSON i tylko odpowiedź musi zostać zinterpretowana).Testowanie interfejsu JSON API Rails POST z PARAMS w JSON
Wiem również, że funkcja działa dobrze, ponieważ użyłem curl do przetestowania go z argumentami JSON i działa idealnie. (np. Curl -i --header "Accept: application/json" --header "Content-Type: application/json" -d '{"test": {"email": "[email protected]"} } ')
Ale oczywiście chciałbym napisać test żądania (cechy), aby przetestować to automatycznie, a sposób, w jaki widzę, powinien działać dokładnie tak, jak curl, tj. Trafić w moją usługę, tak jakby to było połączenie zewnętrzne. Oznacza to, że chciałbym przekazać argumenty w JSON i otrzymać odpowiedź. Jestem całkiem zagubiony, ponieważ wszystkie przykłady, które widzę, ludzie traktują argumenty, ponieważ zostały już odkodowane.
Moje pytanie brzmi: podążam za niewłaściwą przesłanką, chcąc wysłać argumenty i prośbę jako JSON, ponieważ będę testować, czy szyny działają, ponieważ to jest jego odpowiedzialność? Ale chciałbym zobaczyć, jak solidny jest mój kod do błędnych argumentów i chciałbym spróbować z JSON.
coś tego typu:
it "should return an error if there is no correct email" do
params = {:subscription => {:email => "andre"}}
post "/magazine_subscriptions", { 'HTTP_ACCEPT' => "application/json", 'Content-Type' => 'application/json', 'RAW_POST_DATA' => params.to_json }
end
Czy wiesz, jak to jest możliwe? i daj mi znać, jeśli uważasz, że testuję to źle.
wszystkiego najlepszego,
Andre
Dla zwięzłości, zapisz go jako ' '/ magazine_subscriptions pocztowych', params.to_json, format: json'. – user664833
@ user664833 jest bardziej elegancki – Tudorizer
Nie uważam, że .to_json jest konieczne, jeśli już formatujesz go jako obiekt json. Myślę, że powinno to być 'post '/ magazine_subscriptions', params, format:: json' –