Angular için çok yeni ve hala bu kadarını anlamaya çalışıyorum. Yeoman Jeneratöründen oluşturduğum Açısal 1.5.8'i kullanarak bazı testler yazıyorum.TypeError: undefined bir kurucu değil
Özellikle, benim app.js ise
... (önemlidir olup olmadığını emin değilim) $ httpBackend sonuçlarını manipüle anlamaya çalışıyorum Aşağıdaki kod var file:
.run(['$rootScope', '$location', 'breadcrumbService', function ($rootScope, $location, breadcrumbService) {
$rootScope.$on('$viewContentLoaded', function() {
jQuery('html, body').animate({scrollTop: 0}, 200);
});
$rootScope.isEditMode = false;
$rootScope.$on('$stateChangeSuccess', function() {
// ------------ this next line is failing -----------
$rootScope.isEditMode = $location.path().toLowerCase().endsWith('/edit') || $location.path().toLowerCase().endsWith('/new');
});
$rootScope.parseJson = function (value) {
return angular.fromJson(value);
};
$rootScope.bc = breadcrumbService;
$rootScope.title = "";
}])
Yaklaşık yarısında (yorumu eklediğim yerde) başarısız oluyor. Özellikle, endsWith
fonksiyon bu hata ile, (tolower gayet) başarısız: İşte
PhantomJS 2.1.1 (Windows 8 0.0.0) Service: breadcrumbService should return breadcrumb label in json format FAILED
TypeError: undefined is not a constructor (evaluating '$location.path().toLowerCase().endsWith('/edit')') in app/scripts/app.js (line 44)
app/scripts/app.js:44:72
[email protected]_components/angular/angular.js:18005:33
bower_components/angular-ui-router/release/angular-ui-router.js:3353:32
[email protected]_components/angular/angular.js:16383:30
bower_components/angular/angular.js:16399:39
[email protected]_components/angular/angular.js:17682:28
[email protected]_components/angular/angular.js:17495:36
[email protected]_components/angular/angular.js:17790:31
[email protected]_components/angular/angular.js:11831:53
[email protected]_components/angular-mocks/angular-mocks.js:1368:17
[email protected]_components/angular-mocks/angular-mocks.js:1808:26
test/spec/services/breadcrumbservice.js:33:27
[email protected]_components/angular/angular.js:4718:24
[email protected]_components/angular-mocks/angular-mocks.js:3085:26
benim test kodu (farklı örneklerden değiştirilmiş bazı önemsiz - sadece işe almaya çalışırken):
'use strict';
describe('Service: breadcrumbService', function() {
// load the service's module
beforeEach(module('myModule'));
var $httpBackend, $rootScope, createController, authRequestHandler;
beforeEach(inject(function($injector) {
$httpBackend = $injector.get('$httpBackend');
console.log('Is null? '+ ($httpBackend == null));
$httpBackend.whenGET(/views\/.*/).respond(200, [{}, {}, {}]);
authRequestHandler = $httpBackend.when('GET', '/api/v1/SiteStagings')
.respond({userId: 'userX'}, {'A-Token': 'xxx'});
// Get hold of a scope (i.e. the root scope)
$rootScope = $injector.get('$rootScope');
$httpBackend.flush();
}));
// instantiate service
var breadcrumbService;
beforeEach(inject(function (_breadcrumbService_) {
breadcrumbService = _breadcrumbService_;
}));
it('svc should exist', function() {
expect(!!breadcrumbService).toBe(true);
});
it('should return breadcrumb label in json format', function() {
var result = breadcrumbService.getFromCache('site', 'SiteGroupStagings', 46, 'SiteGroupDesc');
console.log(result);
expect(!!result).toBe(true);
});
});
Burada yanlış bir şey yaptığımdan şüphe etmiyorum, ne olduğunu tam olarak anlayamıyorum. Bu hata gerçekten ne anlama geliyor ve neden endsWith
numaralı telefon görüşmemden hoşlanmıyor?
Teşekkür
Sorumun cevabını ya da sadece bir düzenleme olarak yayınla, ama sanırım edilip edilmeyeceğini tartışılan
Ben PhantomJS ile benzer sorunlar yaşıyorum. Çoğu zaman tüm sınamalar geçer, ancak diğer zamanlar hepsi aynı hatayla başarısız olurlar "TypeError: undefined bir kurucu değil (değerlendirme ...) .Windows'da PhantomJS ile olur. Chrome'u kullanarak hatalar asla oluşmaz. –