Tengo un punto de entrada en mi aplicación que se ejecuta a través npm start . Me gustaría realizar algunas pruebas en este script con Jest, pero no sé cómo debo hacerlo. El script se ejecuta automáticamente, por lo que si lo importo a un archivo Jest, no puedo llamarlo individualmente en mis bloques de test como:
const entryPoint = require('./entry-point') test('something', () => { entryPoint() })El código ya se ejecutará antes de llegar a cualquiera de los bloques de prueba.
El código para el punto de entrada está aquí:
const fs = require("fs"); const summarizeData = require("./summarize-data"); try { const fileName = process.argv[2]; if (!fileName) { throw Error("Please enter a file name. ex: npm start <filename>"); } if (!fs.existsSync(`${fileName}.json`)) { throw Error(`The file ${fileName}.json could not be found.`); } const jsonParsed = JSON.parse(fs.readFileSync(`${fileName}.json`, "utf8")); const data = summarizeData(jsonParsed); console.log(data); } catch (error) { throw Error(error); }Creo que será suficiente para la prueba unitaria de la función summarizeData .
Algo como esto (usando shouldJS para afirmaciones):
const should = require('should'); const fileName = 'testData'; test('it summarize data properly', () => { const jsonParsed = JSON.parse(fs.readFileSync(`${fileName}.json`, "utf8")); const dataSummarized = summarizeData(jsonParsed); dataSummarazied.something.should.be.equal(1); // TODO - add other assertions to cover all result })