2010-04-15 17 views
2

Le test de concombre fait d'abord une entrée dans la base de données et envoie un formulaire à un second serveur. Ce second serveur effectue un traitement en arrière-plan, puis frappe la première application (où le test est exécuté) avec des données que le test de concombre doit connaître.Comment puis-je obtenir un serveur rails pour utiliser la même base de données que le concombre utilise lors d'un test?

J'ai essayé de lancer le serveur principal via script/server et script/server -e test alors que le test de concombre est en cours d'exécution, mais je ne peux pas sembler forcer le serveur à utiliser la même base de données que le concombre utilise lorsqu'il exécute ses définitions étape. C'est-à-dire que lorsque le second serveur envoie des données à un contrôleur du serveur principal, le serveur principal ne connaît pas les entrées que le concombre a créées dans la base de données. Comment puis-je obtenir le concombre et le serveur principal pour utiliser la même base de données?

+0

Etes-vous en train de développer un front en utilisant Gazpacho? – Justin

Répondre

0

Vous frappez la solution sur la tête de votre commentaire (n'ont pas le karma de répondre). Les tests sont exécutés dans une transaction, qui est annulée à la fin. Ainsi, le serveur externe est isolé des effets de toutes les requêtes effectuées par Cucumber sur la base de données. Désactiver les appareils transactionnels est la voie à suivre, mais je ne sais pas pourquoi cela ne fonctionne pas. D'autres solutions seraient de: a) ré-identifier votre code pour ne pas avoir besoin d'une base de données commune (qui risque de causer des problèmes ailleurs), ou b) avoir votre test Cucumber dans la base de données du second serveur (via HTTP demande?).

0

Il semble que le réglage Cucumber::Rails::World.use_transactional_fixtures = false dans env.rb a résolu ce problème.

Modifier cela ne fonctionne plus avec la dernière installation de concombre. Le serveur rails ne trouve pas les données mises dans la base de données par le test de concombre.

2

Vous pouvez partager les paramètres d'environnement comme ceci.

config/database.yml

test: &test 
    adapter: mysql 
    encoding: utf8 
    reconnect: false 
    database: baseproj_test 
    pool: 5 
    username: root 
    password: 
    socket: /tmp/mysql.sock 

cucumber: 
    <<: *test 
+0

C'est ce que concombre fait à ce fichier quand il est installé. La commande que j'utilise pour démarrer le serveur: (script/serveur -e test) ne fonctionne toujours pas ne résout pas mon problème. – James