gpt4 book ai didi

javascript - ts-诗乃 : Property 'returns' does not exist on type

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

我正在使用 Typescript 编写应用程序,并希望使用 ts-sinon 创建单元测试.

在他们的 README 中,他们声明您可以像这样 stub 方法:

import * as sinon from 'ts-sinon'

class Test {
method() { return 'original' }
}

const test = new Test();
const testStub = sinon.stubObject<Test>(test);

testStub.method.returns('stubbed');

expect(testStub.method()).to.equal('stubbed');

但是这段代码给我这个错误:

Property 'returns' does not exist on type '() => string'.

我做错了什么?

最佳答案

我遇到了类似的问题,这篇文章对我来说是误报。我认为值得指出的是,当我将代码放入以下测试时,它按预期工作。

/* eslint-disable @typescript-eslint/explicit-function-return-type */
import * as chai from 'chai'
import * as sinon from 'ts-sinon'
const expect = chai.expect

class Test {
public method() : string {return `original`}
}

const test = new Test()

describe.only(`ts-sinon stubObject()<Test> should`, () => {
it(`return the expected value`, () => {
const testStub = sinon.stubObject<Test>(test)
testStub.method.returns(`stubbed`)
expect(testStub.method()).to.equal(`stubbed`)
})
})

我遇到的问题是没有为我的 stub 设置正确的类型。以下示例添加一个 beforeEach 并在更高级别限定 stub 的范围。它设置了不正确的 stub 类型,导致我的“属性返回不存在”错误。

/* eslint-disable @typescript-eslint/explicit-function-return-type */
import * as chai from 'chai'
import * as sinon from 'ts-sinon'
const expect = chai.expect

class Test {
public method() : string {return `original`}
}

describe.only(`ts-sinon stubObject()<Test> should`, () => {
let testStub: sinon.StubbedInstance<Test> // <- Type the stub correctly
beforeEach(() => {
const test = new Test()
testStub = sinon.stubObject<Test>(test)
testStub.method.returns(`stubbed`)
})
it(`return the expected value`, () => {
expect(testStub.method()).to.equal(`stubbed`)
})
})

关于javascript - ts-诗乃 : Property 'returns' does not exist on type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693382/

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