如何让WebStorm识别Jasmine方法?

我有一个 node.js 项目,其中包含一些 Jasmine 规格。规范位于spec /子目录中,并具有.spec.coffee扩展名,如 jasmine-node 所示。

当我在 WebStorm IDE中打开我的一个规范文件时,所有对 beforeEach 和<�的所有调用代码> describe 和 it 以蓝色波浪线下划线显示工具提示:“未解析的函数或方法it()”。即使我正在使用 3.0 EAP ,它应该有一定数量的Jasmine支持,它不会自动发现这是一个茉莉花规格文件。

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.

如何告诉WebStorm spec子目录中的所有文件和/或扩展名为.spec.coffee的所有文件都是Jasmine测试,并让它识别那些测试正在使用的Jasmine API?

120
@Microfed,所以你说2.1.5会自动识别Jasmine测试吗?这是一个已经写好的错误吗?
额外 作者 Joe White,
您应该在 youtrack.jetbrains.net/issues/WI 上将此问题作为问题提交给开发人员可以在未来版本中解决此类情况。
额外 作者 CrazyCoder,
我在3.0 EAP中遇到了同样的问题。这就是为什么我在2.1.5工作的原因。
额外 作者 Microfed,

6 答案

您可以在Webstorm/PHPStorm/Idea中使用预定义的JS库存根

  • 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

我正在使用Jasmine 2.0的这个设置

214
额外
摩卡怎么样?
额外 作者 hellboy,
虽然我正在使用业力,但我必须下载 jasmine 才能使其发挥作用。 karma-jasmine 没有用。
额外 作者 Didier L,
只安装Jasmine也使Webstorm能够识别Jasmine方法
额外 作者 Udo,
如果在列表中找不到它,则表明已安装 - 启用它。如果在退出设置后没有摆脱曲线,则删除并重新下载karma-jasmine。
额外 作者 sennett,
在这里使用'jasmine'库可以使用TypeScript和Angular2,但在相同的Jasmine方法上会产生不同的错误(关于tsconfig.json中缺少的文件条目) - 添加固定的文件条目这导致我的TS文件停止自动编译 - 最后更简单的解决方案可以在下面的答案中找到。
额外 作者 danday74,
这在PhpStorm中使用mocha和expect.js对我有用
额外 作者 MisterBla,
@DidierL!谢谢。这正是我所需要的。一直试图解决这个问题很长一段时间。
额外 作者 user1807337,
它被称为karma-jasmine,他们改变它只是为了帮助我们找到它
额外 作者 Hoto,
我没有使用mocha的经验,但是库定义的方式与jasmine相同
额外 作者 oujesky,
我认为唯一的目的是自动完成帮助(因此IDE不需要处理库代码并猜测界面是如何定义的)。这基本上在这里说: jetbrains.com/webstorm/webhelp/javascript-libraries。 HTML
额外 作者 oujesky,
我是webstorm的新手。这样做会增加什么功能?
额外 作者 Mike Fisher,
对我不起作用。 “describe”,“beforeEach”,“it”仍然以灰色下划线显示。
额外 作者 BuildTester1,
如果您没有使用业力,您可以选择'jasmine'库进行下载。在尝试了业力茉莉之后,这对我有用
额外 作者 Doug Seelinger,
最后一步 - 重启IDE
额外 作者 Sava Jcript,

在使用webstorm 2016.1.1的Mac上,我做了以下事情:

  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

25
额外
完全相同的步骤适用于Windows。
额外 作者 Marc Stober,
我已经在Windows机器上使用IntelliJ 2016.3下载了 jasmine 库,它工作正常,甚至没有重新启动。
额外 作者 Jelle,
它在Mac上适用于我,但我需要关闭并重新启动WebStorm。
额外 作者 Jim,
我还必须将“类型”从全局更改为项目。安装后双击库名称,然后更改“可见性”设置
额外 作者 providencemac,

请注意,如果您使用代码质量工具(如JSHint和WebStorm),添加全局jasmin/karma-jasmine库并没有消除JSHint错误。

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

6
额外
我使用的是2.5.10版本
额外 作者 Aseem Bansal,
我的环境中缺少Jasmine。这是怎么出现在你的?
额外 作者 Aseem Bansal,
@AseemBansal你用的是什么版本的jshint?
额外 作者 prasanthv,
WEBSTORM 10中没有“库”选项
额外 作者 Jessi,

使用 TypeScript (和Angular2),您只需在WebStorm设置中启用TypeScript编译器...

Settings > Languages & Settings > TypeScript ...

在编译器标题下勾选...

启用TypeScript编译器...

(我也点击了使用tsconfig.json收音机)

茉莉花方法现在将得到认可

4
额外
第一个答案我得到了同样的抱怨:相应的文件没有包含在tsconfig.js 中,但我已经做了你的建议我做的
额外 作者 Samuel Thompson,
有趣的是,如果我将 new project 作为 Angular CLI 项目,那么它就会识别它们。我不确定有什么不同。
额外 作者 theblang,
这个解决方案的问题是我不希望 WebStorm 编译我的 TypeScript ,因为我使用 Webpack
额外 作者 theblang,
我使用gulp来转换我的TypeScript,如果正确设置tsconfig.json,那么TypeScript将不会生成输出文件,它只会在IDE中验证它们。
额外 作者 danday74,
这对我来说几乎没有错误。但是,当我这样做时,我从WebStorm中的Typescript编译器选项卡获得此错误输出:错误:错误:解析tsconfig错误[{“messageText”:“未知编译器选项'baseUrl'。”,“category”:1,“code “:5023},{”messageText“:”Unknow&zwnj; n编译器选项'lib'。“,”category“:1,”code“:5023},{”messageText“:”未知的编译器选项'typeRoots'。“ , “类别”:1, “代码”:5023}]
额外 作者 Nikola Schou,
为我工作。别忘了勾选tsconfig.json
额外 作者 Michael Kornelakis,

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.

2
额外

这也可能是由于缺少依赖性(如果您在TypeScript中开发)。

Make sure you've installed @types/jasmine

npm install --save-dev @types/jasmine
2
额外