Javascript jest.fn()的别名?
我有两个不同的库,我用它们来开玩笑。这些库具有相同的函数,称为Javascript jest.fn()的别名?,javascript,typescript,unit-testing,jestjs,coding-style,Javascript,Typescript,Unit Testing,Jestjs,Coding Style,我有两个不同的库,我用它们来开玩笑。这些库具有相同的函数,称为get。这是我当前实现的一个问题,因为两个不同的库使用了get,是否可以为模拟函数(jest.fn())使用别名,或者可能是某种不会破坏当前实现完整性的解决方法 以下是我目前的实施情况,如果可能,我希望保持这种方式: let get: jest.Mock<{}> jest.mock('rxjs/ajax', () => { get = jest.fn() return { ajax: { get } } })
get
。这是我当前实现的一个问题,因为两个不同的库使用了get
,是否可以为模拟函数(jest.fn())使用别名,或者可能是某种不会破坏当前实现完整性的解决方法
以下是我目前的实施情况,如果可能,我希望保持这种方式:
let get: jest.Mock<{}>
jest.mock('rxjs/ajax', () => {
get = jest.fn()
return { ajax: { get } }
})
let get as cookieGet: jest.Mock<()> // Can I do something like this
jest.mock('js-cookie', () => {
get = jest.fn()
return { get }
})
let get:jest.Mock
jest.mock('rxjs/ajax',()=>{
get=jest.fn()
返回{ajax:{get}
})
让我们成为cookieGet:开玩笑。模仿//我能做这样的事吗
jest.mock('js-cookie',()=>{
get=jest.fn()
返回{get}
})
我对JS中的别名不太熟悉,或者它们会处理类似的事情,因此非常感谢您的帮助。如果对象文字导致名称冲突,则无需使用
{get}
速记属性语法
另一个问题是变量需要有mock
前缀才能在jest.mock
工厂函数的范围内使用。作为国家
factory参数的一个限制是,由于对jest.mock()的调用被提升到文件的顶部,因此不可能先定义一个变量,然后在工厂中使用它。以“mock”开头的变量例外。由您来保证它们将按时初始化
它可以是:
import ... from 'rxjs/ajax';
import ... from 'js-cookie';
let mockRxAjaxGet: jest.Mock<{}>
jest.mock('rxjs/ajax', () => {
mockRxAjaxGet = jest.fn()
return { ajax: { get: mockRxAjaxGet } }
})
let mockJsCookieGet: jest.Mock<()>
jest.mock('js-cookie', () => {
mockJsCookieGet = jest.fn()
return { get: mockJsCookieGet }
})
导入。。。来自“rxjs/ajax”;
导入。。。来自“JSCookie”;
让mockRxAjaxGet:jest.Mock
jest.mock('rxjs/ajax',()=>{
mockRxAjaxGet=jest.fn()
返回{ajax:{get:mockRxAjaxGet}
})
让mockJsCookieGet:开玩笑,Mock
jest.mock('js-cookie',()=>{
mockJsCookieGet=jest.fn()
返回{get:mockJsCookieGet}
})
问题是,一旦将jest.mock
提升到导入上方,当let
变量处于时间死区且无法分配时,将对其进行评估
因此,最好将let
更改为var
,然后将其提升。或者,可以像往常一样导入模拟函数,并与get as jest.Mock
一起使用,其中需要间谍。可用于强制执行TypeScript类型安全