如何使用 jest 框架在 nodejs 中为 cassandra 执行查询编写单元测试
How to write unit test for cassandra execute query in nodejs using jest framework
我正在尝试针对从 Cassandra 数据库获取 campaigns/data 的代码编写单元测试用例。
我正在使用 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' 制作模拟。感谢您的帮助,谢谢
您可以 mock db.execute
什么也不做,并使用 mock 获取传递给它的参数。
参数是查询和回调,因此您只需要测试查询是否正确以及回调是否按预期工作。
这是一个简化的工作示例,可以帮助您入门:
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!
})
我正在尝试针对从 Cassandra 数据库获取 campaigns/data 的代码编写单元测试用例。 我正在使用 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' 制作模拟。感谢您的帮助,谢谢
您可以 mock db.execute
什么也不做,并使用 mock 获取传递给它的参数。
参数是查询和回调,因此您只需要测试查询是否正确以及回调是否按预期工作。
这是一个简化的工作示例,可以帮助您入门:
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!
})