Jar*_*ede 8 javascript unit-testing node.js sinon
我正在尝试编写一个单元测试来存根@aws-sdk/s3-request-presignergetSignedUrl
包中的函数,但是当我尝试使用 存根该函数时,我收到错误:sinon
- 类型错误:属性 getSignedUrl 的描述符不可配置且不可写
const s3RequestSigner = require("@aws-sdk/s3-request-presigner");
const expect = require('chai').expect;
const sinon = require('sinon')
....
it('should throw an error when getSignedUrl rejects', async function() {
const sandbox = sinon.createSandbox();
sandbox.stub(s3RequestSigner, "getSignedUrl").rejects("fakeUrl");
sandbox.restore();
})
Run Code Online (Sandbox Code Playgroud)
我正在使用 node.js 16 并编写 javascript 而不是 typescript。有没有办法模拟我的函数,否则我正在努力编写测试?
所以我不会把这个作为官方的答案,除非没有更好的解决方案,但这就是我的研究带来的解决方案。
该问题与此相关:https://github.com/sinonjs/sinon/issues/2377
当 Object.descriptor 不可配置时,sinon 会抛出错误。
目前我找不到明显的解决方法。解决的方法是使用proxyquire:
const sinon = require('sinon')
const proxyquire = require('proxyquire')
...
it('should throw an error when getSignedUrl rejects', async function() {
const fakeurl = 'hello world'
const fakeURL = sinon.stub().resolves(fakeurl)
const handler = proxyquire(
'../../handlers/presigned_url',
{
'@aws-sdk/s3-request-presigner': {
'getSignedUrl': async () => {
return fakeURL()
}
}
}
)
Run Code Online (Sandbox Code Playgroud)
然后这将解决你想要fakeurl
成为的任何事情。
归档时间: |
|
查看次数: |
7331 次 |
最近记录: |