gpt4 book ai didi

typescript - 在 typescript 测试中模拟第三方库(ioredis)

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:04 24 4
gpt4 key购买 nike

我很难在我的 typescript 测试中模拟第三方库。

我正在基于这个 typescript-starter 创建一个库图书馆。它使用 ava 进行测试。

在我的例子中,我试图模拟 ioredis 的主类,这样我的测试就不会尝试建立真实的数据库连接。

我试过使用sinon , testdouble.js , 和 mockery .

在 sinon 我尝试了以下方法

let redisStub = sinon.stub(IORedis)
sinon.assert.called(redisStub.Cluster)

对于 testdouble,我尝试了很多东西,包括;

td.replace('ioredis') // #1
td.replace('./homeMadeIoredisWrapperClass') // #2

我试过了mockery

mockery.enable()
mockery.registerMock('ioredis', {some: 'object'})

我还尝试了许多其他变体,比如总是在方法中使用 require('ioredis')

我想在这里做一些不可能的事情吗?我虽然 stub /模拟数据库是一件很正常的事情,但我似乎无法弄清楚。

也许我的设计有缺陷,我可能试图模拟错误的东西?一些帮助将不胜感激!


附言。在重要的情况下,我正在尝试创建一个非常简单的 ioredis 连接包装器。

最佳答案

您可以仅使用 sinon 模拟 ioredis(版本 4.16.2)。您必须模拟连接方法。

import ioredis from "ioredis";

sinon.stub(ioredis.prototype, "connect").returns(Promise.resolve());
sinon.stub(ioredis.prototype, "get").returns(Promise.resolve({ data: "hello" }));

关于typescript - 在 typescript 测试中模拟第三方库(ioredis),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48188855/

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