从 Jasmine 单元测试加载 Angular 模块
Loading an Angular module from Jasmine unit test
我正在尝试使用 Chutpah 和 Jasmine 在 Visual Studio 中设置我的 Angular 单元测试。
我收到此错误,但不确定原因:
这是我的 timelineservice.js 文件中要测试的代码(在我的 angular 项目中,为我的第一次测试进行了简化)
angular.module('myApp').factory('timelineService',
[
function timelineServiceInit(){
return {
exciteText: function (msg) {
return msg + '!!!';
}
};
}
]
);
这是我的单元测试:
describe('basicService tests', function () {
var myservicenaam;
// excuted before each "it" is run.
beforeEach(function () {
angular.mock.module('myApp', []);
var $injector = angular.injector(['myApp']);
var myService = $injector.get('timelineService');
myservicenaam = myService;
});
//it's removed
});
奇怪的是(恕我直言),当我调试时,代码先转到 'timelineservice.js'
文件,然后模块没有加载(这是正确的)。
我认为测试代码会先 运行 然后加载模块。
在我的测试项目中,我引用了 angular 文件和代码文件。
当我将 angular.module('myApp', []);
代码放入 timelineservice.js
文件时,一切正常。
问题在于您使用的是 setter 模式而不是 getter 模式,因此您的应用无法正确加载。在测试之前尝试以下声明:
beforeEach(module('myApp'));
我正在尝试使用 Chutpah 和 Jasmine 在 Visual Studio 中设置我的 Angular 单元测试。
我收到此错误,但不确定原因:
这是我的 timelineservice.js 文件中要测试的代码(在我的 angular 项目中,为我的第一次测试进行了简化)
angular.module('myApp').factory('timelineService',
[
function timelineServiceInit(){
return {
exciteText: function (msg) {
return msg + '!!!';
}
};
}
]
);
这是我的单元测试:
describe('basicService tests', function () {
var myservicenaam;
// excuted before each "it" is run.
beforeEach(function () {
angular.mock.module('myApp', []);
var $injector = angular.injector(['myApp']);
var myService = $injector.get('timelineService');
myservicenaam = myService;
});
//it's removed
});
奇怪的是(恕我直言),当我调试时,代码先转到 'timelineservice.js'
文件,然后模块没有加载(这是正确的)。
我认为测试代码会先 运行 然后加载模块。
在我的测试项目中,我引用了 angular 文件和代码文件。
当我将 angular.module('myApp', []);
代码放入 timelineservice.js
文件时,一切正常。
问题在于您使用的是 setter 模式而不是 getter 模式,因此您的应用无法正确加载。在测试之前尝试以下声明:
beforeEach(module('myApp'));