A-S*_*ani 4 javascript jasmine typescript karma-jasmine angular
and.callThrough当使用创建间谍对象时,似乎并没有实际运行原始实现createSpyObj。举个例子,假设我有一个 Angular 服务,它具有以下帮助器方法:
user.service.ts:
class UserService {
getFullName(first: string, last: string): string {
return first + ' ' + last;
}
}
Run Code Online (Sandbox Code Playgroud)
在规范中,我使用以下方法创建了一个间谍createSpyObj:
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 ???
});
Run Code Online (Sandbox Code Playgroud)
如何使该getFullName函数按照主类中的实现运行?(我不想存根或调用假函数,但在调用时以某种方式使用主函数实现getFullName)。
我尝试用原来的函数原型覆盖函数原型:
userServiceSpy.getFullName.prototype = UserService.prototype.getFullName;
Run Code Online (Sandbox Code Playgroud)
第二次尝试:
userServiceSpy.getFullName = UserService.prototyp.getFullName; // This is a compile error.
Run Code Online (Sandbox Code Playgroud)
我们需要使用callFake和使用原型中的函数实现,如下所示:
userServiceSpy.getFullName.and.callFake(UserService.prototype.getFullName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4066 次 |
| 最近记录: |