模拟/存根CosmosDB连接以执行单元测试节点js

时间:2018-08-14 14:12:18

标签: node.js unit-testing mocking azure-cosmosdb

我正在寻找可用于模拟与Azure的连接以执行单元测试的任何方法。是否有任何可用的可靠的模拟npm模块。

2 个答案:

答案 0 :(得分:0)

Jest is a general purpose JavaScript testing framework。它提供了几种在模块/导入级别以及单个函数上进行模拟的不同方法。还有其他选项,例如Sinon可以嘲笑,但我发现Jest具备了开箱即用所需的一切。

答案 1 :(得分:0)

我打算沿着这条路模拟 cosmo 客户端和数据库容器。

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