用Karma/Jasmine/JSPM对angular服务进行单元测试
Unit-testing an angular service with Karma/Jasmine/JSPM
我正在为我用Angular 1和JSPM与Karma和Jasmine编写的应用程序编写单元测试。
这是我的Karma配置(jspm部分):
jspm: {
meta: {
'jspm_packages/github/angular/angular.js': {
format: 'global',
exports: 'angular'
},
'jspm_packages/github/angular/angular-mocks.js': {
format: 'global',
deps: 'angular'
}
},
loadFiles: [
'test/**/*.js'
],
serveFiles: [
'app/**/*.js'
]
},
首先,我想测试一个自定义的angular服务:
// imports
class Game {
constructor($rootScope, $http, $timeout, $translate, $location) {
// ...
this.$rootScope.game = this;
}
}
这是我的测试文件:
import { module, inject } from 'angular-mocks';
describe('this is a test', function () {
beforeEach(module('module-name'));
var game;
beforeEach(inject(function(_game_) {
game = new _game_;
}));
it('should be defined', function () {
expect(game).toBeDefined();
});
});
主要问题是我一直有这个错误。从angular-mock的inject
函数似乎不工作,因为,我有我的变量game
没有定义,但它应该是。
PhantomJS 2.1.1 (Windows 8 0.0.0) should be defined FAILED
forEach
loadModules
createInjector
workFn
{path}/node_modules/karma-jspm/src/adapter.js:61:24
tryCatchReject@D:/{path}/jspm_packages/system-polyfills.src.js:1188:34
runContinuation1@D:/{path}/jspm_packages/system-polyfills.src.js:1147:18
when@D:/{path}/jspm_packages/system-polyfills.src.js:935:20
run@D:/{path}/jspm_packages/system-polyfills.src.js:826:17
_drain@D:/{path}/jspm_packages/system-polyfills.src.js:102:22
drain@D:/{path}/jspm_packages/system-polyfills.src.js:67:15
Expected undefined to be defined.
D:/{path}/node_modules/karma-jspm/src/adapter.js:61:24
tryCatchReject@D:/{path}/jspm_packages/system-polyfills.src.js:1188:34
runContinuation1@D:/{path}/jspm_packages/system-polyfills.src.js:1147:18
when@D:/{path}/jspm_packages/system-polyfills.src.js:935:20
run@D:/{path}/jspm_packages/system-polyfills.src.js:826:17
_drain@D:/{path}/jspm_packages/system-polyfills.src.js:102:22
drain@D:/{path}/jspm_packages/system-polyfills.src.js:67:15
所以,我不明白为什么它不起作用。有线索吗?
现在可能太迟了,但是试试不使用新的关键字:
beforeEach(inject(function(_game_) {
game = _game_;
}));
相关文章:
- 使用angular.js问题的JavaSpringREST服务
- Angular使服务可以从任何地方访问
- Angular 2和服务单元测试
- Angular js-尚未添加PUT请求到服务的URL
- 可以't访问Angular.js服务中的功能
- 通过服务Angular向服务器发送$routeParam
- chrome.storage.sync.get未返回值-Angular服务
- 如何在angular中使构造函数之外的服务可用
- Http服务工厂将未定义的返回到Angular中的控制器
- 如何调用用nodejs编写的服务形式angular
- 由控制器调用的服务更改时,Angular未更新视图
- 正在Angular 2中的扩展RouterOutlet中导入自定义服务以进行身份验证
- 将Browserify与Angular JS结合使用--将服务传递到控制器中
- AngularJS剑道网格绑定到angular服务webapi-当使用[fromuri]进行解析时,排序总是为null
- Angular JS$编译服务导致$watch内存泄漏
- 如何在angular js中的工厂/服务中使用$cookie
- angular如何在我的情况下设置服务
- 在一个服务中引用多个API调用(Angular)
- 使用web服务Java-angular时出现错误404
- $http服务angular不工作