我正在尝试使用Karma,Karma-Jasmine和Karma-Browserify在Angular / Browserify项目上设置单元测试。我在Windows机器上,供参考。 karma-cli
位于我的全局npm路径上,karma
,karma-jasmine
,karma-browserify
和browserify
都是本地npm安装,使用-D
。
我正在尝试提取单个spec文件,如下所示:
var PhoneListCtrl = require('../../../public/js/app/controllers/phone-list');
describe('PhoneListCtrl', function() {
var scope,
ctrl;
beforeEach(function() {
scope = {};
ctrl = new PhoneListCtrl(scope);
});
it('should create "phones" model with 3 phones', function() {
expect(scope).not.toBe(undefined);
});
});
我每次都会收到以下错误:
Uncaught Error: Cannot find module 'Cc/gGH'
在克隆以下repos,安装karma和所有插件并尝试运行他们的示例测试套件后,我得到了完全相同的错误:
https://github.com/xdissent/karma-browserify
https://github.com/waye929/angular-browserify
我到底在做什么?正确找到了测试规范模块,并且业力似乎正在寻找所有必要的插件/预处理器,但似乎karma-browserify每次都会在规范中的require
语句中跳闸,原因我无法理解。< / p>
我已经多次卸载并重新安装业力和所有相关插件,但无济于事。
答案 0 :(得分:5)
我设法找到了解决方案。该问题是由karma-browserify
自己的模块名称散列函数引起的,该函数与较新版本的browserify
不兼容。有一个fork使用browserify
的散列函数处理它:
https://github.com/voidlock/karma-browserify/commit/3afe3b7485f2e4723bba5ad1c5a730d560b8c234
有一个挂起请求未决,但与此同时您可以通过放置
来使用fork "karma-browserify": "https://github.com/voidlock/karma-browserify/tarball/use-browserify-hash-function"
在package.json
(dev)依赖关系部分。