我正在尝试将humane.js 通知库合并到我的 AngularJS 应用程序中。我已将 humane.js 使用包装到 Angular 服务中,并且该应用程序运行正常。但是,当我尝试为 Angular 服务编写单元测试时,在尝试执行该服务的第一个测试时出现以下错误:
ReferenceError: humane is not defined
我的 karma.conf 文件包含对 humane.js 文件的引用:
files: [
'bower_components/angular/angular.js',
'bower_components/angular-route/angular-route.js',
'bower_components/angular-mocks/angular-mocks.js',
'bower_components/messageformat/messageformat.js',
'bower_components/angular-translate/angular-translate.js',
'bower_components/angular-translate-interpolation-messageformat/angular-translate-interpolation-messageformat.js',
'bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js',
'bower_components/momentjs/moment.js',
'other_components/highcharts-ng/src/directives/highcharts-ng.js',
'other_components/keylines/keylines.js',
'other_components/logging/log4javascript.js',
'bower_components/angular-bootstrap/ui-bootstrap-tpls.js',
'bower_components/humane-js/humane.js',
'scripts/*.js',
'scripts/*/*.js',
'resources/defaultTranslations.js',
'test/unit/*/*.js',
'views/*.html'
],
我不知道出了什么问题。如果我将 Humane.js 替换为其他类似的通知库 - alertify.js - 并执行完全相同的操作,我不会收到错误消息。
我错过了什么?就像我说的,该应用程序有效,包括通知部分。只有单元测试受到影响。Humane.js 模块使用了一些不寻常的(对我而言)自执行模块语法:
;!function (name, context, definition) {
if (typeof module !== 'undefined') module.exports = definition(name, context)
else if (typeof define === 'function' && typeof define.amd === 'object') define(definition)
else context[name] = definition(name, context)
}('humane', this, function (name, context) {
...模块定义在这里...
return new Humane()
})
我想知道这是否会以某种方式混淆业力加载器。另一个库(alertify.js)没有这种结构。