为什么我的 Jasmine 规范认为我的 Angular 模块未定义?我在实际模块代码下方添加了一行代码,将布尔值设置为 true,然后我从规范中对其进行 console.log,它指示 true。我还尝试更改模块,使其不是超范围(我的术语)或 IIFE,但这没有效果。错误消息的要点是Expected undefined to equal <jasmine.any(Object)>.
规格跑步者:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Angular Spec Runner</title>
<link rel="shortcut icon" type="image/png" href="lib/jasmine-2.4.1/jasmine_favicon.png">
<link rel="stylesheet" type="text/css" href="lib/jasmine-2.4.1/jasmine.css">
<script type="text/javascript" src="lib/jasmine-2.4.1/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-2.4.1/jasmine-html.js"></script>
<script type="text/javascript" src="lib/jasmine-2.4.1/boot.js"></script>
<script type="text/javascript" src="../../bower_components/angular/angular.min.js"></script>
<script type="text/javascript" src="https://code.angularjs.org/1.5.2/angular-mocks.js"></script>
<!-- include source files here... -->
<script type="text/javascript" src="../services/common/common.js"></script>
<!-- include spec files here... -->
<script type="text/javascript" src="specs/commonSpec.js"></script>
</head>
<body>
</body>
</html>
角度模块:
(function () {
'use strict';
var commonModule = angular.module('common', []);
commonModule.factory('common',
['$q', '$rootScope', '$timeout', '$location', 'logger', 'toaster', common]);
function common($q, $rootScope, $timeout, $location, logger, toaster) {
var throttles = {};
var service = {
isPhoneNumber: isPhoneNumber
};
return service;
function isPhoneNumber(phoneStr) {
phoneStr = phoneStr.replace(/\D/g, ''); //strips parens, dots, dashes, etc.
return phoneStr.length === 10
&& parseInt(phoneStr, 10) >= 2000000000 //area code can't start with 0 or 1
&& parseInt(phoneStr.slice(-7), 10) >= 2000000; //exchange can't start with 0 or 1
};
}
})();
window.commonModuleLoaded = true;
Spec:
'use strict';
describe('common', function () {
var common;
beforeEach(module('common'));
beforeEach(inject(function (_common_) {
common = _common_;
}));
console.log('window.commonModuleLoaded :' + window.commonModuleLoaded);
it('is an object', function () {
expect(common).toEqual(jasmine.any(Object));
})
});