Я тестирую наш сервис загрузки файлов следующим образом:
Cypress.Commands.add('uploadFile', (fileNamePath, fileName, fileType = ' ', selector) => {
cy.get(selector).then(subject => {
cy.fixture(fileNamePath, 'base64')
.then(Cypress.Blob.base64StringToBlob)
.then(blob => {
const el = subject[0]
const testFile = new File([blob], fileName, {
type: fileType
})
const dataTransfer = new DataTransfer()
dataTransfer.items.add(testFile)
el.files = dataTransfer.files
})
})
})
Затем в spec-файле.нажмите кнопку загрузки и подождите, пока файл загрузится:
cy.server().route('POST', api-upload-url).as('loadUp')
cy.uploadFile('./pathToFile/' + fileName, fileName, fileType, fileInput);
cy.get('.btn-upload.mat-raised-button.mat-primary').click()
cy.wait('@loadUp').then((response) => {
expect(response.method).to.eq('POST')
expect(response.status).to.eq(200)
expect(response.response.body.status).to.eq('OK')
})
Также есть проверка желаемых ответов.
Это не супер фантазия и оптимизированный.Но это работает в 3.1.5 и 3.2.0.Он работает, используя электрон 59 как с головой, так и без головы