我想为此对象创建一个模拟,以进行单元测试。
sqs.listQueues().promise()
.then(...
这是我尝试对此进行模拟并仍然收到错误sqs.listQueues(...).promise is not a function
const sqs = {
listQueues: () => Promise.resolve(this),
promise: () => Promise.resolve()
}
如何正确模拟该对象?
答案 0 :(得分:3)
类似listQueues()
的外观不应返回承诺。也许这行得通:
const sqs = {
listQueues: () => ({
promise: () => Promise.resolve()
})
}
答案 1 :(得分:2)
这是一个相当幼稚的版本,可能会助您一臂之力。
const mockResolve = (val, delay = 0) => () =>
new Promise((res) => setTimeout(() => res(val), delay))
const mockReject = (err, delay = 0) => () =>
new Promise((_, rej) => setTimeout(() => rej(err), delay))
const sqs = {
listQueues: () => ({
promise: mockResolve('foo')
})
}
sqs.listQueues().promise().then(console.log)
这可能有很多问题,但这只是初次通过。