【发布时间】:2021-05-20 21:59:50
【问题描述】:
我正在寻找可以用来模拟与 Azure 的连接以执行单元测试的任何方法。有没有好的可靠的模拟 npm 模块可用。
【问题讨论】:
标签: node.js unit-testing mocking azure-cosmosdb
我正在寻找可以用来模拟与 Azure 的连接以执行单元测试的任何方法。有没有好的可靠的模拟 npm 模块可用。
【问题讨论】:
标签: node.js unit-testing mocking azure-cosmosdb
我正在走这条路来模拟 cosmo 客户端和 db 容器。
jest.mock('@azure/cosmos', () => {
return {
CosmosClient: jest.fn(() => ({
database: jest.fn(() => ({
container: jest.fn(() => ({
items: {
query: jest.fn(() => ({
fetchAll: jest.fn(() => ({
resources: [{ cat: 'dog' }],
})),
})),
},
})),
})),
})),
}
用于模拟以下内容
const client: CosmosClient = new CosmosClient('...')
const database: Database = client.database('...')
const container: Container = database.container('...')
const querySpec = {
query: `SELECT * from ...`,
}
const response: Model[] = await (
await container.items.query(querySpec).fetchAll()
).resources
【讨论】:
Jest is a general purpose JavaScript testing framework。它提供了几种不同的方法来在模块/导入级别以及单个函数中进行模拟。还有其他选项,例如 Sinon 进行模拟,但我发现 Jest 拥有开箱即用的一切。
【讨论】:
let DocumentDBClient = require('documentdb').DocumentClient; let docDbClient = new DocumentDBClient(config.COSMOS_DB.HOST, { masterKey: config.COSMOS_DB.AUTH_KEY });