and.callThrough
当使用创建间谍对象时,似乎实际上并没有运行原始的实现createSpyObj
。例如,假设我有一个具有以下帮助程序方法的Angular服务:
user.service.ts
:
class UserService {
getFullName(first: string, last: string): string {
return first + ' ' + last;
}
}
在规格中,我使用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 ???
});
如何使getFullName
函数像在主类中实现的那样运行?(我不想存根或调用伪函数,但是在调用时以某种方式使用main函数实现getFullName
)。
我试图用原始的覆盖函数原型:
userServiceSpy.getFullName.prototype = UserService.prototype.getFullName;
第二次尝试:
userServiceSpy.getFullName = UserService.prototyp.getFullName; // This is a compile error.
我们需要使用callFake
和使用原型中的函数实现,如下所示:
userServiceSpy.getFullName.and.callFake(UserService.prototype.getFullName);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句