const test = require('node:test') const assert = require('node:assert') const { useTempDb } = require('./helper') // wx.js 本身不连库,但按项目约定统一在 require 业务模块前处理好临时库, // 避免以后 wx.js 引入了连库逻辑时这份测试悄悄读写到真实数据库。 useTempDb() const axios = require('axios') const wx = require('../src/wx') test('微信返回非 0 errcode 时,抛出的 Error 对象应带上原始 errcode', async () => { const restoreGet = axios.get const restorePost = axios.post // getAccessToken 走 axios.get,sendSubscribeMessage 走 axios.post,两个都要 mock axios.get = async () => ({ data: { access_token: 'fake_token', expires_in: 7200 } }) axios.post = async () => ({ data: { errcode: 43101, errmsg: 'user refuse to accept the msg' } }) await assert.rejects( () => wx.sendSubscribeMessage({ touser: 'oTest', page: 'pages/index/index', templateId: 'tplTest', data: {} }), (err) => { assert.strictEqual(err.errcode, 43101, 'Error 对象应带上微信返回的原始 errcode,而不是靠字符串匹配') return true } ) axios.get = restoreGet axios.post = restorePost })