如何将代码和单元测试传递给npm测试?

时间:2019-03-04 13:07:55

标签: javascript node.js unit-testing npm

我想在服务器上即时进行单元测试,而无需编写临时文件。是否可以将要测试的代码和单元测试都传递到npm test? npm测试文档有点空白(https://docs.npmjs.com/cli/test)。 另外,如果有其他解决方案,也不必是npm test

谢谢你, 詹斯

1 个答案:

答案 0 :(得分:5)

npm test只是执行npm程序包的测试套件的一种便捷方法,而不必担心套件的运行方式的细节。如果在没有scripts的{​​{1}}条目的项目上运行它,则会得到test。如果您为此设置Error: no test specified

package.json

然后{ "scripts": { "test": "echo This is a test!" } } 将回显到控制台npm test。您在真实项目中所做的事情是设置一个脚本来启动 real 测试工具。例如,This is a test!是一个测试运行程序,因此一旦安装,您就可以:

mocha

或者您可以拥有Karma,Jest或水龙头,或者您拥有什么。

您在悬赏通知中写道:

  

某些网站提供在线JavaScript代码测试,它们是否真的用用户代码写出临时文件以通过npm test进行单元测试?

提供在线测试的网站提供非常不同的服务。 因此,根据您指的是哪种在线测试服务,答案有时是肯定的,有时是否。

  • Travis-ci提供一项服务,可在其服务器上运行您的整个测试。为此,它从git存储库中检出了受测分支,因此,是的,他们正在获取用户代码的副本。请注意,这与您设置运行 "scripts": { "test": "mocha" } 的测试运行程序完全无关:无论运行Mocha还是Karma,还是其他原因,Travis都会检出被测试的分支,然后运行npm test

  • 另一方面,
  • SauceLabs和BrowserStack本身不会运行套件,而是提供启动浏览器进行测试的虚拟机。您的测试套件仍在您的计算机上运行。因此,他们不会获得正在测试的代码的副本。同样,您使用哪个跑步者也没有关系。我已经通过Mocha,Karma,Behave等使用这些服务运行套件。

现在关注您的标题:

  

如何将代码和单元测试传递给npm测试?

我不知道要测试的代码管道的测试设置。提供测试代码的最常见方法是测试,而测试本身就是结帐像Travis一样从存储库中获取代码。 (请注意,这不需要将您的代码公开。测试服务可以与私有存储库一起使用。)