import tcb from '../../src/index' import assert from 'assert' import config from '../config.local' import { ERROR } from '../../lib/const/code' describe('functions.invokeFunction: 执行云函数', () => { const app = tcb.init(config) it('校验调用云函数传参', async () => { let a: any = {} let b: any = {} a.c = b b.c = a let result try { result = await app.callFunction({ name: 'test', data: a }) } catch (e) { assert(e.code === ERROR.INVALID_PARAM.code && e.message === '对象出现了循环引用') } try { result = await app.callFunction({ name: '', data: { a: 1 } }) } catch (e) { assert(e.code === ERROR.INVALID_PARAM.code && e.message === '函数名不能为空') } }) it('执行不存在的云函数', async () => { expect.assertions(1) try { const result = await app.callFunction({ name: 'unexistFunction', data: { a: 1 } }) } catch (e) { expect(e.code).toBe('FUNCTION_NOT_FOUND') } }) // 灰度期间暂不放开新特性 it('执行云函数 设定自定义超时', async () => { try { const result = await app.callFunction( { name: 'test', data: { a: 1 } }, { timeout: 10 } ) assert(!result) } catch (err) { assert(err.code === 'ESOCKETTIMEDOUT') } }, 30000) it('mock callFunction 回包为string', async () => { jest.resetModules() jest.mock('request', () => { return jest.fn().mockImplementation((params, callback) => { const body = { data: { response_data: 'test' } } process.nextTick(() => { callback(null, { statusCode: 200, body }) }) }) }) const tcb1 = require('../../src/index') const app1 = tcb1.init(config) try { let result = await app1.callFunction({ name: 'unexistFunction', data: { a: 1 } }) // console.log(result) assert(typeof result.result === 'string') } catch (err) { console.log(err) } }) it.only('function debug', async () => { const app = tcb.init(config) const callRes = await app.callFunction({ name: 'invoke', data: { key1: 'test value 1', key2: 'test value 2', userInfo: { // appId: '', openId: 'oaoLb4qz0R8STBj6ipGlHkfNCO2Q' } } }) console.log('callRes:', callRes) }) })