gpt4 book ai didi

javascript - 使用 createSpyObj 创建 spy 时 callThrough 不起作用

转载 作者:行者123 更新时间:2023-12-01 21:52:15 24 4
gpt4 key购买 nike

当使用 createSpyObj 创建 spy 对象时,and.callThrough 似乎并未实际运行原始实现。例如,假设我有一个具有以下辅助方法的 Angular 服务:

user.service.ts:

class UserService {

getFullName(first: string, last: string): string {
return first + ' ' + last;
}
}

在规范中,我使用 createSpyObj 创建了一个 spy :

user.service.specs.ts

const userServiceSpy = jasmine.createSpyObj<UserService>('UserService', ['getFullName']);

// ....

beforeEach(() => {

userServiceSpy.getFullName.and.callThought();
const test = userService.getFullName('test1', 'test2');
console.log(test); // < = = = = = ISSUE: test is undefined! WHY ???
});

如何使 getFullName 函数像在主类中实现的那样运行?(我不想 stub 或调用伪函数,而是在调用 getFullName 时以某种方式使用主要函数实现)。

我尝试用原来的覆盖函数原型(prototype):

userServiceSpy.getFullName.prototype = UserService.prototype.getFullName;

第二次尝试:

userServiceSpy.getFullName = UserService.prototyp.getFullName; // This is a compile error. 

最佳答案

我们需要使用callFake,使用原型(prototype)中的函数实现如下:

userServiceSpy.getFullName.and.callFake(UserService.prototype.getFullName);

关于javascript - 使用 createSpyObj 创建 spy 时 callThrough 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59059391/

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