如何测试使用浏览器API的代码

时间:2017-06-16 21:16:29

标签: javascript node.js unit-testing phantomjs casperjs

我正在使用节点来运行我的单元测试

我在浏览器中运行了一个JavaScript模块,我想测试一下。

我的代码是“ isomorphic ”,即它避免了Node中没有的语言功能,例如export s。

但它使用纯浏览器API:XMLHttpRequestFormDataFile 我已经为每个人找到了Node的实现 但XMLHttpRequest中的一个不支持上传

所以我正在寻找在这些API的环境中对这些代码进行单元测试的最简单方法 代码不需要DOM或其​​他浏览器API,“仅”这三个。

我已经使用 PhantomJS 来满足其他需求,但是:

  • 这将创建另一个测试工作流程(次要问题),
  • 它支持较旧的JavaScript版本,它会强制完全重写代码以进行测试(主要问题),
  • 代码中有很多可能不兼容的NPM依赖项(阻塞问题)。

由于代码浏览器化,所有这些问题可能会消失,但在此之前我想确定。

有没有机会让它与 PhantomJS CasperJS 等合作?

还有哪些其他选择?

1 个答案:

答案 0 :(得分:2)

这不是测试在浏览器中运行的代码的方式。如果它在浏览器中运行,则需要在浏览器中进行测试。

您需要根据webdriver规范查看解决方案。这个生态系统中的大毛怪是Selenium。我目前正在研究这个主题,因为我们使用selenium-server时遇到了一些问题。您还应该研究Nightwatch和Leadfoot。 Webdriver.io是许多人推荐的第一个推荐,因为它是一个基于节点的客户端,包围Selenium(很差)。但是文档已经到处都是,并且我们经常遇到使用它的错误。