gpt4 book ai didi

node.js - 如何使用 jest 框架为 cassandra 在 Node.js 中执行查询编写单元测试

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:49 25 4
gpt4 key购买 nike

我正在尝试针对我的代码编写一个单元测试用例,该代码从 Cassandra DB 获取事件/数据。我正在使用 Jest 框架进行单元测试。

const db = require('../../db/client');
getCampaigns(req: express.Request, res: express.Response) {
db.execute('select * from campaign_definitions', (err: any,
result: any) => {
if (err) {
logger.error(`${err.status || 500} - ${err.message} -
${req.originalUrl} - ${req.method} - ${req.ip}`);
return res.status(500).send(err);
}
res.send(result.rows);
});
}

我不知道如何使用 Jest 来模拟“db.execute”。感谢您的帮助,谢谢

最佳答案

您可以模拟 db.execute 不执行任何操作,并使用模拟来获取传递给它的参数。

参数是查询和回调,因此您只需测试查询是否正确以及回调是否按预期工作。

这是一个简化的工作示例,可帮助您入门:

import * as express from 'express';
const db = require('../../db/client');

function getCampaigns(req: express.Request, res: express.Response) {
db.execute('select * from campaign_definitions', (err: any, result: any) => {
res.send(result.rows);
});
}

test('getCampaigns', () => {
const res: any = { send: jest.fn() };
const mock = jest.spyOn(db, 'execute'); // spy on db.execute...
mock.mockImplementation(() => {}); // <= ...and mock the implementation

getCampaigns({} as any, res);

const args = db.execute.mock.calls[0]; // <= get the args passed to db.execute
const query = args[0];
const callback = args[1];
callback(null, { rows: 'the rows' }); // <= call the callback

expect(query).toBe('select * from campaign_definitions'); // Success!
expect(res.send).toHaveBeenCalledWith('the rows'); // Success!
})

关于node.js - 如何使用 jest 框架为 cassandra 在 Node.js 中执行查询编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56468096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com