137
votes

I have a node.js project that contains some Jasmine specifications. The specifications are in a spec/ subdirectory and have the .spec.coffee extension, as required by jasmine-node.

When I open one of my spec files in the WebStorm IDE, all the calls to beforeEach and describe and it are shown with blue squiggly underlines with the tooltip: "Unresolved function or method it()". So even though I'm using the 3.0 EAP and it's supposed to have some amount of Jasmine support, it's not automatically picking up on the fact that this is a Jasmine spec file.

I tried going into File > Settings > JavaScript Libraries, and adding Jasmine as a library (specifying the path to jasmine-2.0.0.rc1.js), and then going to the Usage Scope sub-page and checking "Jasmine" in the drop-down list next to "Project", but that had no effect -- the Jasmine methods still show up as unresolved.

How can I tell WebStorm that all files in a spec subdirectory, and/or all files with a .spec.coffee extension, are Jasmine tests, and have it recognize the Jasmine APIs those tests are using?

6
I have the same problem in 3.0 EAP. This is reason why I'm working in 2.1.5. - Microfed
You should submit this as an issue at youtrack.jetbrains.net/issues/WI so that developers can address such cases in the future versions. - CrazyCoder
@Microfed, so you're saying that 2.1.5 does automatically recognize Jasmine tests? Is this a bug that's already been written up? - Joe White

6 Answers

241
votes

You can use predefined JS library stubs in Webstorm/PHPStorm/Idea

  • Open File > Settings...
  • Select Languages & Frameworks > JavaScript > Libraries
  • Click on Download...

JavaScript Library settings

  • Swich to TypeScript community stubs
  • Find karma-jasmine (originally under the name jasmine) (If this does not work, try jasmine instead)
  • Click on Download and Install

enter image description here

I am using this setup with Jasmine 2.0

30
votes

On a mac with webstorm 2016.1.1 i did the following :

  1. Open Preferences (webstorm->preference or [command + ,] )
  2. Go to libraries and frameworks -> javascript -> libraries
  3. download
  4. select 'jasmine - DefinitelyTyped' from the list

Jasmine support added to webstorm

6
votes

Note, if you are using a Code Quality Tool such as JSHint with WebStorm, adding the global jasmin/karma-jasmine library did not get rid of the JSHint errors.

You need to access the JSHint settings via WebStorm's menu system (Lang & Frameworks>JavaScript>Code Quality Tools>JSHint) and click the checkbox to enable it know which environment it is running in.

JSHint setting

4
votes

Using TypeScript (and Angular2) you just need to enable the TypeScript compiler in the WebStorm Settings ...

Settings > Languages & Settings > TypeScript ...

Under the Compiler heading tick ...

Enable TypeScript Compiler ...

(I also clicked the use tsconfig.json radio)

Jasmine methods will now be recognised

4
votes

This could also be caused by a missing dependency (if you're developing in TypeScript).

Make sure you've installed @types/jasmine

npm install --save-dev @types/jasmine
2
votes

If you encounter this issue after having generated a project using the Angular CLI then go to File -> Settings -> Languages & Frameworks -> JavaScript -> Libraries and check {your-project-name}/node_modules.