J'ai un test RSPEC pour une classe dans / lib / classes code> qui a besoin d'accéder à un fichier zip (pas de téléchargement). Le fichier est stocké dans
/spec/fixture/files/test.zip code>. Comment saisir le chemin correct de sorte que son environnement agnostique, c'est-à-dire sans chemin absolu? P>
3 Réponses :
Aussi loin que je sache (de regarder tous les mois ou deux), il n'y a pas de meilleure façon de construire quelque chose dans Vous pouvez évidemment utiliser un chemin d'accès par rapport au fichier SPEC_HELPER CODE> qui utilise le fichier
__ __ code> pour saisir le chemin d'accès à Un peu de contenu, puis construisez vos propres assistants sur cela. P>
__ code> dans l'individu
* _ spécifique code> fichier aussi. p>
Pour d'autres personnes avec le même problème: puisque ma spécification réside dans / SPECT / SPECT / CLASSES, j'ai terminé avec: file.dirname (__ file__) + '/../ fixtures / fichiers / test.zip' code>
Cela fonctionne bien, mais cela pourrait être un peu fragile au cas où vous réorganisez vos spécifications. Bien sûr, il ne faut pas supposer que vous utilisez des rails, mais si vous avez accès aux projets racine dir (rails.root, sinatra :: Application.root) Cela pourrait - ou pourrait ne pas être une alternative plus stable.
Pour faire ce travail sur des plateformes, n'embedez pas '/' dans une chaîne, utilisez plutôt: File.join (fichier.dirname ( fichier b>), '..', "Fichiers", "Fichiers ',' test.zip ')
RUBY a également besoin_Relatif - introduit dans 1.9.2, plus il y a un gemme qui la réalise à 1,8
vous donnera le chemin absolu de votre fichier, agnostique de l'emplacement de l'application sur l'application. votre disque dur. p> p> rails.root code> vous donnera la racine de l'application, donc
Avec RSPEC-Rails, vous pouvez accéder aux appareils plus faciles comme décrit ici: RelishApp.com/rspec/rSpec-Rails/v/3-5/docs/file-fixture
J'ai abordé ce problème récemment et voici ce que je suis venu avec:
Définissez une constante dans votre Utilisez cette variable dans votre Voici un gist: https://gist.github.com/thisismydesign/9dc142f89b82a5D2983A45A5D2983B07 p> p> SPEC_HELPER.RB CODE> (ou équivalent) pointant sur RSPEC ROOT: P> xxx pré>
* _ SPEC.RB CODE> (ou équivalent) Fichiers de test: P>
require 'spec_helper'
File.open("#{RSPEC_ROOT}/resources/example_data.json")
nécessite "SPEC_HELPER" CODE> LI>
rails.root code>) li>
ul>