fake.js
705 Bytes
/**
* 测试用假 provider:把投递写入注入的 sink,而不真发出。
* 让 send / sendTemplate 编排无需网络即可测,并断言投出的内容正确。
*/
/**
* @param {(record: { msg: import('../index.js').SendMessage, message_id: string }) => void} [sink]
* 每次投递回调(也可传入数组的 push)。
* @returns {import('../index.js').Provider}
*/
export function createFakeProvider(sink) {
let n = 0
const emit = typeof sink === 'function' ? sink : () => {}
return {
async send(msg) {
n += 1
const message_id = `fake-${n}-${Date.now()}`
emit({ msg, message_id })
return { message_id, provider: 'fake', to: msg.to }
},
}
}