Издевательство над fs.existsSync - PullRequest
0 голосов
/ 05 августа 2020

Поскольку fs не разрешен в Cypress / веб-браузере, я создаю макеты для fs функций, вызываемых в моем исходном (не тестовом / электронном) коде.

Например, fs.existsSync. Этот метод вызывается много раз и возвращает разные ответы. Поэтому вместо того, чтобы вручную издеваться и жестко кодировать все их ответы, я просто создал task внутри макета, чтобы его можно было проверять динамически.

window.Cypress.fs = require('fs')
window.Cypress.fs.existsSync = (file) => {
  var retVal = ''
  cy.task('existsSync', file).then((result) => { retVal = result })
  return retVal
}

it('Sample test', () => {
  cy.visit('http://localhost:8080')  
})

А в моем plugins.js задача проста реализовано как:

on('task', {
    existsSync (file) {
      return fs.existsSync(file)
    }
})

Но затем я получаю сообщение об ошибке:

Uncaught Uncaught CypressError: Cypress detected that you returned a promise from a command while also invoking one or more cy commands in that promise.

The command that returned the promise was:

  > `cy.visit()`

The cy command you invoked inside the promise was:

  > `cy.task()`

fs.existsSync() вызывается во время «загрузки». Таким образом, он вызывается во время создания приложения (во время cy.visit())

Как использовать fs.existsSync ??

Help !!!

...