【发布时间】:2020-05-24 02:03:42
【问题描述】:
我在 Express 路由中有一些代码可以与 AWS Cognito 对话,但我无法弄清楚如何在测试中模拟它。
cognitoExpress.validate(accessTokenFromClient, (err, response) => {
if (err) return res.status(401).json({ error: err });
res.json({ data: `Hello ${response.username}!` });
});
然后在我的测试中我想说 cognitoExpress.validate 应该被调用一次并返回 {username: 'test user'} 以便它不会访问网络并且实际上不会调用 AWS Cognito
it('It should returns 200 with a valid token', async done => {
const { cognitoExpress } = require('../helpers/cognitoExpress');
// I have tried
jest.mock('../helpers/cognitoExpress');
// and this
jest.mock('../helpers/cognitoExpress', () => ({
validate: jest.fn()
}));
const token = 'sfsfdsfsdfsd';
const response = await request.get('/').set('Authorization', token);
expect(cognitoExpress.validate).toHaveBeenCalledWith(token);
expect(response.body).toEqual({ data: 'Hello test user' });
done();
});
提前谢谢....
【问题讨论】:
标签: node.js express testing mocking jestjs