Quelle est la différence conceptuelle entre Rspec de specs de caractéristiques et spécifications de demande ?
À partir de la documentation sur les spécifications des fonctionnalités:
Les spécifications de fonctionnalités sont des tests de haut niveau destinés à exercer des tranches de fonctionnalités via une application. Ils doivent piloter l'application uniquement via son interface externe, généralement des pages Web.
Et pour les spécifications de demande:
Les spécifications de demande fournissent un wrapper fin autour des tests d'intégration de Rails et sont conçues pour piloter le comportement à travers la pile complète, y compris le routage (fourni par Rails) et sans stubbing (c'est à vous de décider). Avec les spécifications de demande, vous pouvez:
- spécifier une seule demande
- spécifier plusieurs demandes sur plusieurs contrôleurs
- spécifier plusieurs demandes sur plusieurs sessions
Je sais que les spécifications de fonctionnalités utilisent Capybara et les spécifications de demande ne le font pas. Mais cela ne mérite guère des concepts différents.
"GET /login"
bloc de description avec des attentes dans desit
blocs tels queexpect(response.status).to eq(200)
etexpect(response).to render_template(:new)
, ou dans undescribe "POST /sessions"
, uncontext "with valid credentials"
bloc, avecexpect(response).to redirect_to(user)
etfollow_redirect!; expect(response.body).to include("Signed in")
visit users_path
) ou des chaînes codées en dur (visit '/users'
) ?. Personnellement, je préfère ne pas utiliser les composants internes de l'application dans ce type de spécifications.