2017-08-19 1 views
2

Dans mon code actuel, j'utilise process.cwd() pour obtenir le répertoire de travail courant, puis charger un fichier (comme le fichier de configuration). Ci-dessous, je vais montrer le concept de mon code et comment je l'ai testé.jest process.cwd() pour obtenir le répertoire du fichier de test

C'est la structure du répertoire:

├── index.js 
└── test 
    ├── index.test.js 
    └── config.js 

index.js

const readRootConfig = function() { 
    const dir = process.cwd(); 
    console.log(dir); // show the working dir 
    const config = require(`${dir}/config.js`); 
} 

Et puis-je utiliser plaisanterie pour tester ce fichier.

index.test.js

import readRootConfig '../index'; 

it('test config',() => { 
    readRootConfig(); 
}) 

Après Refaites le test, console de dir est ./ (sortie réelle est un chemin absolu, je montre juste le chemin relatif dans cette démo)

Mais ce que j'espère que la sortie de dir est ./test.

Y at-il une config pour faire en sorte que jest utilise le test file folder pour être le dossier process.cwd()?

Je pense une de la solution est passe dir path comme paramètre, comme:

index.js

const readRootConfig = function(dir) { 
    console.log(dir); // show the working dir 
    const config = require(`${dir}/config.js`); 
} 

Mais je ne suis pas assez comme cette solution, la cause de cette méthode est de s'adapter à l'essai.

Alors, une suggestion? Merci.

Répondre

2

Peut-être que vous voulez faire un module qui peut savoir quel fichier l'a requis, vous pouvez utiliser module.parent. C'est le module qui a d'abord requis celui-ci. Et puis vous pouvez utiliser path.dirname pour obtenir le répertoire du fichier.

Alors index.js devrait être comme ça

const path = require('path') 

const readRootConfig = function() { 
    const dir = path.dirname(module.parent.filename) 
    console.log(dir); // show the working dir 
    const config = require(`${dir}/config.js`); 
}