Pla*_*Ton 1 javascript promise jestjs
我是开玩笑的新手,并且无法确定如何测试嵌套在 Promise 中的结果。具体来说:
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)
}
})
}
Run Code Online (Sandbox Code Playgroud)
我想测试以确保,假设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()
})
})
})
Run Code Online (Sandbox Code Playgroud)
目前我收到一个Cannot read property 'then' of undefined错误 - 这是有道理的,但我不确定我应该如何在 then() 调用中准确地破解期望。任何想法表示赞赏
您需要将您创建的 Promise 存储在测试中,以便您可以使用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()
})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4216 次 |
| 最近记录: |