【问题标题】:Karma Unit Testing业力单元测试
【发布时间】:2017-11-01 10:45:44
【问题描述】:

我在尝试启动 karma 时无法找出此错误的原因:

bash-3.2$ NODE_ENV=test karma start
INFO [karma]: Karma v0.12.31 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.8 (Mac OS X)]: Connected on socket FONtQ1oNxIxRecRxYgnS with id 73511945
PhantomJS 1.9.8 (Mac OS X) ERROR
ReferenceError: Can't find variable: require
at /public/components/angular-cookies/index.js:1

index.js 文件包含:

require('./angular-cookies');
module.exports = 'ngCookies';

请帮忙!!

【问题讨论】:

  • 你能发布你的业力配置文件吗?好像少了点什么……

标签: node.js karma-runner


【解决方案1】:

解决此问题的一种方法是发送至npm install karma-browserify --save-dev。这应该可行,如果您需要的实际文件使用 require,则必须这样做。

index.js 不是您需要的实际文件。 angular-cookies.js 是。

我发现使用 browserify 会使调试测试错误变得更加困难,因为您从 karma 获得的堆栈跟踪将引用临时 .browserify 捆绑包中的行号,这些捆绑包在您的测试完成时已经被删除。

一个简单的解决方案是将karma.conf.js 中的files 直接指向angular-cookies.js,而不是使用通配符。这样,index.js 及其对 require 的使用不会造成不必要的问题。

【讨论】:

    【解决方案2】:

    require 是 nodejs 的特性 尝试安装这个karma-browserify,它允许你使用“require”

    【讨论】:

      【解决方案3】:

      尝试将 browserify 添加为

      preprocessor:
      'test/**/*.js': ['browserify']
      

      并将其添加到您的框架中

      【讨论】:

        猜你喜欢
        • 2016-06-19
        • 2014-01-21
        • 2018-06-09
        • 1970-01-01
        • 1970-01-01
        • 2016-04-10
        • 2018-06-07
        • 2014-09-18
        相关资源
        最近更新 更多