Tôi đang cố gắng thử nghiệm ứng dụng AngularJS của mình với Jasmine qua Karma. Tôi nhận được lỗi này (ít nhất, đây là mới nhất của họ):Thử nghiệm nhà máy AngularJS trong Karma với Jasmine
Uncaught TypeError: Cannot read property '$modules' of null
at /Users/benturner/Dropbox/Code/galapagus/app/static/js/angular-mocks.js:1866
Từ karma.conf.js tôi:
files: [
'static/js/jquery.min.js',
'static/js/angular.min.js',
'static/js/angular-mocks.js',
'static/js/angular-resource.min.js',
'static/js/angular-scenario.js',
'static/js/angular-loader.min.js',
'static/js/momentous/ctrl_main.js', // contains all my app's code
'test/momentous.js'
],
Sau đây là thử nghiệm của tôi:
(function() {
"use strict";
var controller = null;
var scope = null;
describe("Services", inject(function($rootScope, Moments) {
var mockedFactory, moments, flag, spy;
moments = [{name: 'test'}];
beforeEach(module('momentous', function($provide) {
scope = $rootScope.$new();
$provide.value('$rootScope', scope);
mockedFactory = {
getList: function() {
return moments;
}
};
spy = jasmine.createSpy(mockedFactory.getList);
$provide.value('Moments', mockedFactory);
}));
it('should return moments from the factory service', function() {
runs(function() {
console.log(scope.getList);
flag = false;
setTimeout(function() {
scope.getList();
flag = true;
}, 500);
});
waitsFor(function() {
return flag;
}, "The call is done", 750);
runs(function() {
expect(scope.moments).toEqual([{name: 'test'}]);
expect(spy).toHaveBeenCalled();
});
});
}));
}());
Vì vậy, những gì tôi đang cố gắng làm là thử dịch vụ nhà máy của tôi và kiểm tra xem nó đang trả về một mảng các đối tượng và đặt chúng thành một biến trong phạm vi $.
Có một cuộc gọi không đồng bộ trong đó vì vậy tôi phải sử dụng hàm run() và waitsFor().
Tôi vẫn không hiểu làm cách nào tôi tiêm phạm vi $ của mình để tôi có thể thử nghiệm với nó và với angular-mocks.js hiện đang cho tôi lỗi tôi cảm thấy mình đang dần dần giải quyết vấn đề này, chứ không phải gần hơn.
Tôi đã kết hợp điều này với nhau từ nhiều tài liệu, hướng dẫn và câu trả lời stackoverflow khác nhau. Bất kỳ hướng dẫn nào? Cảm ơn.
'tiêm() 'cũng có thể được sử dụng trong' beforeEach() 'cuộc gọi. –
Vì vậy, điều này không được giải quyết. Một số người hiểu nên giải thích lý do tại sao khi đi qua tất cả các tài liệu khác nhau để hiểu nó là khó hiểu. –