Mi interfaz depende de un archivo de configuración json que contiene varios parámetros que pueden modificar el contenido de la página.
Cuando comienza la prueba, mi archivo tiene un contenido específico. Me gustaría encontrar una manera de escribir este archivo, pero solo para la prueba actual, de modo que no quede ningún estado para la próxima prueba.
Esta es mi solución actual, pero el problema es que si las pruebas fallan, la versión original del archivo no se restablece. ¿Cuál podría ser otro enfoque?
it('should work a specific way with the given configuration', () => { cy.readFile('my-app/parameters.json').then( (originalFile) => { // Modify the json file however I'd like cy.writeFile('my-app/parameters.json', someConfiguration); // Test details cy.writeFile('my-app/parameters.json', originalFile); } ); });No hay nada realmente malo en lo que estás haciendo (es como reiniciar una base de datos).
¿Pero quizás usar un nombre diferente para el original?
it('should work a specific way with the given configuration', () => { cy.readFile('defaultParameters.json').then( (originalFile) => { // Modify the json file however I'd like cy.writeFile('parameters.json', someConfiguration); // Test details } ); });Tenga en cuenta que cuando la prueba falla a mitad de camino, es posible que no vuelva a escribir el original.
Mueva cy.readFile('defaultParameters.json') a cy.fixture('defaultParameters.json') ya que Cypress almacena en caché la lectura del dispositivo.
Ver accesorio - Cargado solo una vez
Tenga en cuenta que se supone que los archivos de dispositivos no cambian durante la prueba y, por lo tanto, Test Runner los carga solo una vez. Incluso si sobrescribe el propio archivo de aparatos, los datos de aparatos ya cargados siguen siendo los mismos.
Si desea cambiar dinámicamente el contenido de un archivo durante sus pruebas, considere cy.readFile() en su lugar.