2012-09-27 1 views
0

Je veux écrire des tests pour détruire des objets sur ruby ​​on rails avec concombre et capybara et rack_test.Que tester et comment le tester?

Je pense que je devrais écrire un scénario comme:

When I try to delete X object 
Then I should be on the index page for ... 
And I should see "Object deleted successfully" 

Je ne veux pas le tester en cliquant sur un lien sur la page d'index ou la page show/édition parce que je pense que je devrais être tester quelque chose de différent que purement l'action de suppression.

En outre, en cliquant sur un lien signifie que l'interface est ok, mais que se passe-t-il si quelqu'un envoie une demande de supprimer un objet qu'il ne peut pas et l'interface ne montre pas le lien? Compte tenu de cela, je dois envoyer une demande de suppression à la première étape, puis inspecter la réponse à cette demande.

J'ai trouver des problèmes en essayant de le faire parce que quand je mets en œuvre la première étape que delete url puis lorsque je tente page.should have_contain(text) je reçois l'erreur No response yet. Request a page first. (Rack::Test::Error)

Que pensez-vous à ce sujet?

Répondre

0

départ how-do-you-post-to-a-url-in-capybara (répondre à une autre question), mais il a plusieurs exemples de la façon d'utiliser la visite dans un test de capybara comme

visit "item/:id/delete" 
+0

Ok cette question semble résoudre un problème. Bien qu'après avoir fait la demande de poste, ce qui fonctionne parfaitement, je veux vérifier que je suis redirigé vers le bon chemin. Le problème est qu'après la requête de publication, la variable 'last_request.url' a l'URL de la page redirigée mais pas' current_url' et l'étape pour vérifier l'URL utilise 'current_url' au lieu de' last_request.url'. Pire, si je le change pour 'last_request.url', j'obtiens' la méthode undefined 'url 'pour # (NoMethodError)'. –