最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Jasmine + TypeScript, can`t find the withArgs () method of the Spy class - Stack Overflow

programmeradmin0浏览0评论

According to the Jasmine documentation, the Spy object has a method withArgs ()

spyOn (someObj, 'func'). withArgs (1, 2, 3) .and.returnValue (42);

I can`t find this method in the version adapted for TypeScript. My project was created with angular-cli(ng new), Jasmine was provided from the box. When I try to call the withArgs() method, Visual Code writes to me that this method does not exist in the Spy class...

According to the Jasmine documentation, the Spy object has a method withArgs ()

spyOn (someObj, 'func'). withArgs (1, 2, 3) .and.returnValue (42);

I can`t find this method in the version adapted for TypeScript. My project was created with angular-cli(ng new), Jasmine was provided from the box. When I try to call the withArgs() method, Visual Code writes to me that this method does not exist in the Spy class...

Share Improve this question asked May 11, 2018 at 10:26 Evgeniy MiroshnichenkoEvgeniy Miroshnichenko 1,8632 gold badges20 silver badges32 bronze badges 1
  • 1 The @types/jasmine node package seems to be out of date with the current latest version of Jasmine, 3.1. I've opened an issue on the GitHub repo so it can be addressed. – Jacob Stamm Commented Aug 7, 2018 at 17:33
Add a ment  | 

2 Answers 2

Reset to default 5

It's likely that you are either using an old version of jasmine, or an old version of the jasmine typings library. This particular method was introduced in Jasmine 3.0. Notice that in the Jasmine 2.9 docs, the method does not exist.

All you need to do is update your Jasmine and jasmine typings libraries. Assuming you are using npm, you can do something like this:

npm i -D jasmine@latest jasmine-core@latest @types/jasmine@latest

This updates all jasmine related libraries to their latest version and saves it as devDependencies.

In my case, updating the Jasmine library was no option within the delivery time span due to pany policies. Hence I could not use withArgs. I solved it by using callFake and manually check the argument there.Like this:

mockAuthenticationService = jasmine.createSpyObj<AuthenticationService>('authenticationService', ['hasPermission']);
mockAuthenticationService.hasPermission.and.callFake((permission) => {
  return (permission === 'MyPermission');
});
发布评论

评论列表(0)

  1. 暂无评论