gpt4 book ai didi

javascript - Jasmine :这是 returnValue 和 callFake 之间的唯一区别吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:47 27 4
gpt4 key购买 nike

callFake和returnValue的唯一区别是callFake可以根据自定义逻辑(参数/环境)返回不同的值?

还有其他区别吗?

最佳答案

callFake(() => {...}) 接受回调函数

  1. If we just want a return value when a service method is called then we can use any of and.callFake or and.returnValue

组件文件:

@Component(...)
export class DependencyComponent {
constructor(private service: RandomService){....}
.....
sampleMethod() {
return this.service.randomMethod();
}
.....
}

上述组件的单元测试用例:

it('test callFake vs returnValue', () => {
let randomService= new RandomService();
let component = new DependencyComponent(randomService);
spyOn(randomService, 'randomMethod').and.callFake(() => 4)
expect(component.sampleMethod()).toBe(4)
spyOn(randomService, 'randomMethod').and.returnValue(10);
expect(component.sampleMethod()).toBe(10)
})

在上面的例子中,两种方式都是正确的。

  1. Suppose we are passing a parameter to service method to perform its logic then in that case we have to use and.callFake((param) => {...}). Here param parameter will be the argument passed to the spied method.

组件文件:

@Component(...)
export class DependencyComponent {
constructor(private service: RandomService){....}
.....
sampleMethod(val) {
return this.service.randomMethod(val);
}
.....
}

上述组件的单元测试用例:

it('test callFake vs returnValue', () => {
let randomService= new RandomService();
let component = new DependencyComponent(randomService);
spyOn(randomService, 'randomMethod').and.callFake((param) => param+4)
expect(component.sampleMethod(4)).toBe(8);
expect(component.sampleMethod(12)).toBe(16)
})

当执行 component.sampleMethod(4) 时,它将调用 this.service.randomMethod(4)。由于 randomMethod() 正在使用 and.callFake 进行侦察,因此 4 将作为 and.callFake 的回调函数的参数传递

关于javascript - Jasmine :这是 returnValue 和 callFake 之间的唯一区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43839185/

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