angularjs 工厂的 Jasmine 2.0 单元测试
Jasmine 2.0 unit testing for angularjs factory
我是为 angularJS 工厂编写 jasmine 测试用例的新手。
我想测试整个工厂,但无法获取 getKeys
。这是我的工厂。
我的工厂是:
'use strict';
var a11yModule = angular.module('TestModule', ['ui.bootstrap']);
a11yModule.factory('TestFacotry', ['$q', '$timeout', function ($q, $timeout) {
return {
getKeys: function () {
return {
"abc": 32,
"gpa": 33,
"end": 35
};
}
};
}])
我的单位规格是:
describe('modu testing', function () {
var TestFacotryMock, q, timeout;
beforeEach(module('TestModule', ['ui.bootstrap']));
beforeEach(inject(function (_$q_, _$timeout_, _TestFacotry_) {
q = _$q_;
timeout = _$timeout_;
TestFacotryMock = _TestFacotry_;
}));
it('Should ', function () {
//var output = TestFacotryMock.getKeys.something();
expect(typeof getKeys()).toBe('function');
});
});
错误是
错误:[$injector:modulerr] 由于以下原因无法实例化模块 TestModule:
错误:[$injector:modulerr] 无法实例化模块 ui.bootstrap 由于:
错误:[$injector:nomod] 模块 'ui.bootstrap' 不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。
jamin 需要在 index.html 中的 angular 模块之前引用,因为 angular-mock 库依赖于 jasmin。
load the libraries like jasmin angular,angular-mock from local folder instead from web
.
<link data-require="jasmine" data-semver="1.3.1" rel="stylesheet" href="http://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css">
<script data-require="jasmine" data-semver="1.3.1" src="http://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<script data-require="jasmine" data-semver="1.3.1" src="http://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>
<script data-require="angular.js" data-semver="1.1.5" src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
<script data-require="angular-resource.js" data-semver="1.1.5" src="http://code.angularjs.org/1.1.5/angular-resource.min.js"></script>
<script data-require="angular-mocks" data-semver="1.1.5" src="angular-mocks.js"></script>
<link rel="stylesheet" href="style.css">
<script src="jasmineBootstrap.js"></script>
<script src="script.js"></script>
<script src="addSpec.js"></script>
单元测试中的一些错误
it('Should ', function () {
expect(typeof TestCommonMock.getKeys()).toBe('object');
});
我是为 angularJS 工厂编写 jasmine 测试用例的新手。
我想测试整个工厂,但无法获取 getKeys
。这是我的工厂。
我的工厂是:
'use strict';
var a11yModule = angular.module('TestModule', ['ui.bootstrap']);
a11yModule.factory('TestFacotry', ['$q', '$timeout', function ($q, $timeout) {
return {
getKeys: function () {
return {
"abc": 32,
"gpa": 33,
"end": 35
};
}
};
}])
我的单位规格是:
describe('modu testing', function () {
var TestFacotryMock, q, timeout;
beforeEach(module('TestModule', ['ui.bootstrap']));
beforeEach(inject(function (_$q_, _$timeout_, _TestFacotry_) {
q = _$q_;
timeout = _$timeout_;
TestFacotryMock = _TestFacotry_;
}));
it('Should ', function () {
//var output = TestFacotryMock.getKeys.something();
expect(typeof getKeys()).toBe('function');
});
});
错误是
错误:[$injector:modulerr] 由于以下原因无法实例化模块 TestModule: 错误:[$injector:modulerr] 无法实例化模块 ui.bootstrap 由于: 错误:[$injector:nomod] 模块 'ui.bootstrap' 不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。
jamin 需要在 index.html 中的 angular 模块之前引用,因为 angular-mock 库依赖于 jasmin。
load the libraries like jasmin angular,angular-mock from local folder instead from web
.
<link data-require="jasmine" data-semver="1.3.1" rel="stylesheet" href="http://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css">
<script data-require="jasmine" data-semver="1.3.1" src="http://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<script data-require="jasmine" data-semver="1.3.1" src="http://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>
<script data-require="angular.js" data-semver="1.1.5" src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
<script data-require="angular-resource.js" data-semver="1.1.5" src="http://code.angularjs.org/1.1.5/angular-resource.min.js"></script>
<script data-require="angular-mocks" data-semver="1.1.5" src="angular-mocks.js"></script>
<link rel="stylesheet" href="style.css">
<script src="jasmineBootstrap.js"></script>
<script src="script.js"></script>
<script src="addSpec.js"></script>
单元测试中的一些错误
it('Should ', function () {
expect(typeof TestCommonMock.getKeys()).toBe('object');
});