真正的http调用在e2e业力测试中失败了吗?

时间:2016-04-20 21:56:51

标签: karma-runner systemjs e2e-testing

是的,我知道Karma应该用于单元测试。但是,

  1. 没有要测试的UI,因为它是基于REST的服务器上的瘦Javascript API
  2. 一个nodeJS测试运行器因为我们希望测试在浏览器中运行(被测试的库是基于浏览器的)而不会削减它。
  3. 我们使用JSPM / SystemJS。
  4. 我们可以使用量角器。量角器的问题在于它是为测试用户界面而设计的,因此无需使用UI就可以使用 hacky :a)为我们要测试的每个功能创建一个入口点文件加载所有正确的模块b)通过在全局窗口中访问这些模块来创建测试...

    同时...... Karma拥有SystemJS支持。它还在浏览器中运行测试。将karma作为测试运行器,我们可以直接在测试中使用模块(这就是我们需要SystemJS支持的原因)。

    然而,在业力测试中进行真正的HTTP调用失败。我们使用fetch API。在PostMan中工作的端点在Karma测试中失败...即使在禁用CORS(在获取中)之后也是如此。所以下面的提取调用失败了:

     fetch(url, {mode: 'no-cors').then(rslt => rslt.json()) //errors out w/ no status code!
    

    有什么想法吗? Karma的另一种解决方案也很好。使用Protractor的更优雅的黑客也可以。

    更新:另一个解决方法是告诉karma启动禁用CORS的浏览器。这种方法的缺点是我们需要为我们支持的每个浏览器创建一个自定义启动器。

0 个答案:

没有答案