在Gulp任务中的本地服务器上运行单元测试

时间:2018-03-20 20:49:18

标签: javascript unit-testing gulp html5-history

我一直在谷歌搜索并尝试不同的事情好几天,我已经到了最后。

我正在尝试在终端中为在内部使用History API的应用程序库运行自动单元测试。我正在使用Babel将我的单元测试(使用Mocha / Chai / Sinon编写)转换并合并到一个测试文件中。然后,我将一个本地HTML文件(包括该测试文件)打开到Headless Chrome中以运行测试。这一切都很好。

当Headless Chrome引发错误时,我首先遇到麻烦,因为我在本地文件上使用History API的pushState方法。确切的错误消息是:

  

错误:无法在“历史记录”上执行“pushState”:无法在包含origin的文档中创建URL为“file:/// C:/ code / projects / app / test / foo”的历史状态对象null'和URL'file:/// C:/code/projects/app/test/runner.html'。

因此,我安装gulp-connect来运行一个本地服务器,该服务器在gulp任务开始时启动,并在任务结束时关闭(我不想要持久连接)。我通过服务器重新配置所有内容,当我运行Gulp任务时,之前的错误就消失了。

问题是终端不再打印单元测试的结果。 Gulp告诉我任务开始并结束,但没有别的。它给人的印象是,即使我故意添加一个失败的测试,测试也会通过。

知道这里发生了什么吗?我认为这将是一个非常直接的过渡,这让我相信我做了一些愚蠢的事情(经常发生)。如果它解决了这个问题,我并不反对放弃Gulp(例如NPM脚本)。最终目标是让这个是一个我可以手动运行的自动化流程,Travis CI可以在每次推送到公共仓库时运行。

很抱歉这个长期的问题,我真的很沮丧。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题,我通过切换到Karma来解决它。多谢StackOverflow!