2010-08-15 14 views
1

J'ai remplacé Webrat pour Capybara sur un nouveau projet Rails 3. J'ai couru à travers le grand article de Tim Riley ici (http://openmonkey.com/articles/2010/04/javascript-testing-with-cucumber-capybara), et aussi cloné son dépôt, exécuté l'exemple de la fonction concombre, et vu la fenêtre du navigateur s'ouvrir. Ainsi, la pile de concombres, Capybara et Selenium semble fonctionner correctement dans ce cas. Toutefois, si je crée un nouveau projet Rails 3, exécutez un exemple de projet similaire et annotez un scénario avec @javascript, la fenêtre du navigateur ne se déclenche pas et le scénario du concombre échoue simplement avec le Command failed with status (1) event habituel (qui, dans le cas d'étapes défaillantes ou en attente, les déclencheurs de concombre par conception au profit des outils CI). En dehors de la fonctionnalité @javascript fournie par Capybara, toutes les autres fonctionnalités fonctionnent correctement. Est-ce que je manque quelque chose d'incroyablement évident? Existe-t-il un moyen pour un nouvel arrivant BDD de regarder plus en profondeur dans les problèmes (la trace de la pile montre juste l'erreur de rake standard lorsque le concombre échoue).Comment puis-je obtenir des balises Capybara @javascript s'exécutant correctement dans Cucumber sur un projet Rails 3?

  • RVM 1.9.2-tête
  • gem 'rails', '3.0.0.rc'
  • gem 'concombre'
  • gem 'concombre rails'
  • gem 'capybara'
  • bijou 'culerity'
  • bijou 'rapidité', require => nul

Répondre

5

La question est en fait avec des rails de concombre et une dépendance manquante sur DatabaseCleaner: http://github.com/aslakhellesoy/cucumber-rails/issues#issue/36

Le problème se manifeste lors de l'ajout d'une étiquette @javascript une caractéristique de concombre. Par défaut, les options de concombre suppriment les avertissements qui m'auraient alerté au fait. En mettant à jour config/cucumber.yml à:

std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags [email protected]"

l'erreur est affiché lors de l'exécution du concombre: uninitialized constant DatabaseCleaner (NameError)

La solution rapide dans ce cas est d'ajouter à gem 'database_cleaner'Gemfile de projet.

+0

c'est un génie! Merci beaucoup :) –

1

Ca pybara est "paresseux" en ce sens qu'il ouvrira d'abord la fenêtre du navigateur quand il est réellement nécessaire. Si vous êtes en train de faire quelque chose qui nécessiterait un navigateur, Capybara n'en ouvrira pas un.

+0

Je l'ai fait recréer les mêmes étapes dépendant de JavaScript comme dans l'exemple de Tim sans chance.Un peu plus de tête et je suis sûr que la réponse apparaîtra! – justsee

1

Peut-être n'avez-vous pas installé la pierre précieuse mongrel. L'automatisation du navigateur ne fonctionne pas avec webrick d'une manière ou d'une autre et j'ai éprouvé le même défaut silencieux que vous décrivez ici.

Ajout

bijou 'bâtarde', '> = 1.2.0.beta.1'

à mon Gemfile a résolu.

1

J'ai fait une application par exemple sur la façon de configurer que: github.com/lailsonbm/contact_manager_app/