【发布时间】:2018-01-10 13:47:06
【问题描述】:
在我的打字稿测试中,我很难模拟第三方库。
我正在基于这个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')
我想在这里做一些不可能的事情吗?我虽然存根/模拟数据库是一件非常正常的事情,但我似乎无法弄清楚。
也许我的设计有缺陷,也许我试图模拟错误的东西?一些帮助将不胜感激!
附言。在重要的情况下,我正在尝试创建一个非常简单的 ioredis 连接包装器。
【问题讨论】:
标签: typescript mocking sinon testdoublejs