Jestjs “如何测试”;这";开玩笑地调用上下文?

Jestjs “如何测试”;这";开玩笑地调用上下文?,jestjs,Jestjs,如何在jest中测试函数是否使用正确的上下文调用 我只能找到如何测试传入的参数。但是它没有测试这个上下文,我也找不到任何其他用于此上下文或示例的API。JEST 创建一个函数的名称,然后使用 test('this-using-Jest'的值,()=>{ 常数foo={ 名称:“foo”, func:function(){ return`my name is${this.name}`; } } const mockFunc=jest.spyOn(foo,'func');//监视foo.func()

如何在
jest
中测试函数是否使用正确的
上下文调用

我只能找到如何测试传入的参数。但是它没有测试
这个
上下文,我也找不到任何其他用于此上下文或示例的API。

JEST

创建一个函数的名称,然后使用

test('this-using-Jest'的值,()=>{
常数foo={
名称:“foo”,
func:function(){
return`my name is${this.name}`;
}
}
const mockFunc=jest.spyOn(foo,'func');//监视foo.func()
expect(foo.func()).toBe('我的名字是foo');
expect(mockFunc.mock.instances[0]).toBe(foo);//在foo上调用
mockFunc.mockClear();
常数条={
名称:'酒吧',
func:foo.func//使用来自foo的func
}
expect(bar.func()).toBe('我的名字是bar');
expect(mockFunc.mock.instances[0]).toBe(bar);//在bar上调用
});
SINON

为了获得更好的语义,可以使用提供对该
的直接访问

import*作为sinon从“sinon”导入;
test('使用Sinon'的该值,()=>{
常数foo={
名称:“foo”,
func:function(){
return`my name is${this.name}`;
}
}
const spy=sinon.spy(foo,'func');//监视foo.func()
expect(foo.func()).toBe('我的名字是foo');
expect(spy.lastCall.thisValue).toBe(foo);//在foo上调用
常数条={
名称:'酒吧',
func:foo.func//使用来自foo的func
}
expect(bar.func()).toBe('我的名字是bar');
expect(spy.lastCall.thisValue).toBe(bar);//在bar上调用
});

这就是所谓的伪测试。我已经有了类似的工作,但我希望
jest
能够支持像
这个
上下文一样重要的东西。奇怪的是,他们不会有它。@vitaly-t是的,在感觉像是
实例之后
是用来跟踪构造函数创建的实例的,而不是用来返回正常函数的
这个
。我更新了我的答案,加入了
Sinon
,它对测试
提供了直接和文档化的支持。