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 }
    },
  }
}