Dans mon serveur nodejs, je voudrais me moquer de fs pour mon test avec Mocha. Je finis par utiliser Mockery, mais j'ai vraiment mal compris un concept.Mock fs module en utilisant la moquerie
Dans mon test (j'utilise Tapuscrit aussi):
// mock for fs
var fsMock = {
readdir: (path: string) => { return { err: undefined, files: [] } },
writeFile: (path: string, content: string, encoding: string) => { return { err: undefined } },
readFileSync: (path: string, encoding: string) => { return "lol" }
};
Mockery.registerMock('fs', fsMock);
beforeEach((done) => {
Mockery.enable({
useCleanCache: true,
warnOnReplace: false,
warnOnUnregistered: false
});
}
afterEach(() => {
Mockery.disable();
});
mais malheureusement lors de mon test, mon module utilise toujours l'ancien fs. J'ai compris pourquoi ne travaille pas. En effet, sur mon test, je:
- importer mon module en haut du fichier
- que j'importer le module, mon module importera ses dépendances, comme fs.
- comme à ce moquerie temps n'est pas encore activé (nous ne sommes toujours pas en cours d'exécution d'un test ...), les fs importées dans mon module est l'original d'un
- Je moquerie de configuration avant mon test
- J'exécute mes test, qui échouent car est toujours le fs original qui est utilisé ...
Maintenant la question est: comment puis-je dire à mon module de re-exiger ses dépendances pour utiliser ma version moqueuse de fs? Et plus globalement, comment je peux me moquer facilement des fs?
Merci.
L'astuce consiste à exiger le module que vous testez APRÈS avoir configuré le faux. –
Aussi, je pense que vous devez d'abord activer Mockery, avant d'enregistrer un simulacre –
J'utilise l'importation et cela ne peut être utilisé en haut du fichier :( – Adavo