【发布时间】:2020-09-09 20:09:40
【问题描述】:
给定两个函数:
export const func1 = (accessKeyId, secretAccessKeyID, region, queue, body) =>
new AWS.SQS({ accessKeyId, secretAccessKey: secretAccessKeyID, region })
.sendMessage({ QueueUrl: queue, MessageBody: body })
.promise();
export const func2 = (queue, body) => func1(config.key, config.secret, config.region, queue, body);
直截了当的功能。我想如何测试 func2,并验证我是否使用正确的参数调用了一次 func1,所以我有:
import { func1, func2 } from '../uploads';
import sinon from 'sinon';
describ('test 1', ()=> {
it('send job queue should send correct param to sendToSqs', async done => {
const spy = sinon.spy(func2);
const queue = 'test-queue';
const topic = 'test-topic';
const data = { field1: 'value1', field2: 'value2' };
await func1(queue, topic, data);
expect(spy.calledOnce).to.be.equal(true);
done();
});
});
上面运行会报错:
(node:29076) UnhandledPromiseRejectionWarning: UnknownEndpoint: Inaccessible host: `test-queue'. This service may not be available in the `us-east-1' region.
显然,即使创建了 spy,它仍然会尝试调用其中的函数。所以我认为我在这里有两个问题:
1.spy 似乎与func2 没有关联,我错过了什么?
2. 我也应该嘲笑func1。但 mock 仅适用于对象内部的函数。如何模拟没有父对象的函数?
【问题讨论】:
标签: javascript testing mocha.js chai sinon