Jest: тестирование вложенного обещания - PullRequest
0 голосов
/ 09 мая 2018

Я новичок в шутке и не могу определить, как проверить результаты, вложенные в обещания. В частности:

myMethod: function (e) {
  let self = this
  self.resetErrors()

  Parser.parseFile(this.form.uploadFile).then(res => {
    const hasErrors = self.validFile(res)
    if (!hasErrors) {
      self.processFile(res)
    }
  })
}

Я бы хотел проверить, что, если hasErrors ложно, self.processFile срабатывает. Вот мое текущее (неудачное) лучшее усилие:

describe("if the provided data is valid", () => {
  it('runs processFile', () => {
    const mockProcessFile = jest.fn()
    mockParser = jest.fn(() => {
      new Promise((resolve, reject) => {
        return ValidMockData
      }).then((loanData) => {
        expect(mockProcessFile).toBeCalled()
      })
    })

    CsvParser.parseFile = mockParser

    wrapper.vm.validFile = jest.fn(true)
    wrapper.vm.processFile = mockProcessFile
    wrapper.vm.store().resolve((data) => {
      expect(mockProcessFile).toBeCalled()
    })
  })
})

В настоящее время я получаю ошибку Cannot read property 'then' of undefined - это имеет смысл, но я не уверен, как именно я должен оправдать ожидания внутри вызова then (). Любые мысли оценили

1 Ответ

0 голосов
/ 09 мая 2018

Вам нужно сохранить созданное вами Обещание в тесте, чтобы вы могли использовать await, чтобы завершить тест после его разрешения:

describe("if the provided data is valid", async() => {
  it('runs processFile', () => {
    const mockProcessFile = jest.fn()
    const p = Promise.resolve(ValidMockData)
    CsvParser.parseFile = jest.fn(() => p)


    wrapper.vm.validFile = jest.fn(true)
    wrapper.vm.processFile = mockProcessFile
    wrapper.vm.store()

    await p

    expect(mockProcessFile).toBeCalled()
    expect(mockProcessFile).toBeCalled()


  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...