Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用单元测试和某种IDE在Javascript中开发_Javascript_Eclipse - Fatal编程技术网

如何使用单元测试和某种IDE在Javascript中开发

如何使用单元测试和某种IDE在Javascript中开发,javascript,eclipse,Javascript,Eclipse,我不喜欢保存文件、切换到web浏览器、刷新并查看它是否有效 这就是我问的原因 当我必须接触PHP时,我使用Eclipse,我可以创建单元测试并确保它正常工作,我不写一点,然后写一点再测试。所以我希望以同样的方式“开发”Javascript,编写一个块,确保它工作,但我不确定如何测试由按钮触发的操作 我搜索了“Javascript开发”和其他术语,我得到了预期的大量垃圾。。。好吧,你好,世界,真的 有人能给我指出正确的方向吗?我目前使用Eclipse(EclipseCDT、PyDev、Eclips

我不喜欢保存文件、切换到web浏览器、刷新并查看它是否有效

这就是我问的原因

当我必须接触PHP时,我使用Eclipse,我可以创建单元测试并确保它正常工作,我不写一点,然后写一点再测试。所以我希望以同样的方式“开发”Javascript,编写一个块,确保它工作,但我不确定如何测试由按钮触发的操作

我搜索了“Javascript开发”和其他术语,我得到了预期的大量垃圾。。。好吧,你好,世界,真的

有人能给我指出正确的方向吗?我目前使用Eclipse(EclipseCDT、PyDev、EclipsePHP等等),我可以进行调试。我可以不用对Javascript进行分步调试,但我非常喜欢单元测试

我遇到的另一个问题是很难找出哪里出了问题,甚至PHP也可以给你一个调用跟踪,我被Firefox在web开发者设置中令人恼火的访问错误所困扰


肯定有更好的方法,但我正在努力寻找。

Firefox确实有一个名为firebug的插件。如果这不是你正在谈论的恼人的Firefox工具,那么你应该看看它是否对你有帮助

第一步;静态分析:

第二步;测试:


第三步

我建议您使用chrome开发者模式,或者您可以对firefox使用
firebug

抓取firebug看一看,它是一个命令行“JavaScript任务运行程序”,可以帮助实现缩小、编译、linting和单元测试等自动化

有许多其他工具和框架的插件。如果您不使用框架或不支持单元测试的框架,那么应该使用测试框架。下面是一个(主要是tdd风格的)框架列表:

测试通常通过
grunt test
在控制台中“无头”运行。根据测试框架的不同,可能还会有一个外观更好的生成网页,显示最新的测试结果。您可以在IDE中设置一个按钮/热键/操作来运行这个控制台命令(大多数编辑器也有这个功能)来启动单元测试

我使用grunt作为(它添加了一个包管理器和脚手架以及一些grunt插件)的一部分,我发现其中最有用的特性是可以对文件更改执行grunt操作。这意味着您甚至不需要设置IDE或文本编辑器来使用grunt。只需保存一个文件,grunt就会自动运行单元测试之类的任务。另一个有用的功能是
grunt-serve
命令与livereload插件相结合,它将启动一个服务器,在保存文件时自动在浏览器中重新加载页面


不利的一面是,它似乎更专注于单页网络应用。如果您有在服务器端生成的复杂页面,并且只有一些javascript,那么它可能不适合您的需要。

如果您需要单元测试,您可以使用QUnit、Jasmine或Mocha/Chai。(我用摩卡咖啡/柴)。棘手的部分是在没有浏览器的情况下进行测试。第一个选项是使用CasperJs和PhantomJs。这些是无头浏览器,可以运行JavaScript而不需要在实时浏览器中,因此所有测试都可以从命令行自动进行。如果您还添加了Karma,那么您可以以无头方式在指定的任意多个浏览器中进行测试

如果您使用的是PHP,则可以从Packagist存储库安装Codeception。在集成测试模块下,添加Selenium。这将询问您希望它启动哪些浏览器。这是使用PHP和JavaScript进行测试的最好方法(如果使用PhpBrowser,另一个默认软件包,速度要快得多,但它不识别JavaScript),但它的性能成本很高,因为它实际上会打开一组不同的浏览器并进行每项测试。我不建议这样做,除非作为构建过程的最后一部分

如果您想学习如何彻底测试JavaScript,下面是您的助手:


我正在使用jasmine.js进行单元测试

我的编辑器是内置Web服务器的方括号。括号打开包含JS代码的html页面,即Chrome,并在每次保存由html文件加载的JS文件时自动重新加载页面

结合jasmine,我有一个设置,当我保存js文件时,我的单元测试总是运行

但是,如果您想测试按钮的功能,这并没有真正的帮助。我认为有两种可能性:

  • 如果您的按钮启动了一些不改变UI的代码,那么您应该从事件处理程序中分离业务逻辑,这样您就可以在没有UI的情况下从单元测试中调用业务逻辑
  • 如果按钮改变了UI,您可以使用Selenium或任何其他设计用于测试GUI的工具

  • 在浏览器中调试是不可避免的。如果您不喜欢本机Firefox工具,请安装Firebug,或者尝试使用Chrome.grunt w/livereload-保存时,它会自动刷新加载代码的浏览器,您可以在其中进行测试。我使用Chrome开发者模式,这很奇怪,您可以使用括号作为JSIDE@Pointy我会调查的,我听说过“油嘴滑舌”之类的,但我必须承认,我拒绝了它,与PyDev(我正在寻找的东西)相比,我认为它是空闲的(用Python编写的Python IDE)——谢谢,真的。@NG。我也会调查的,谢谢!