Ich versuche, einige Tests mit Jasmine für einen AngularJS-Dienst zu machen, den ich für Spotify erstellt habe. Aber ich bekomme immer wieder einen Fehler mit meinen Tests, wenn ich das Versprechen einchecke.
Mein Test ist derzeit wie folgt aus:
describe('Spotify.search', function() {
var $httpBackend;
var $rootScope;
var Spotify;
var api = 'https://api.spotify.com/v1';
beforeEach(inject(function(_Spotify_, _$httpBackend_, _$rootScope_) {
Spotify = _Spotify_;
$httpBackend = _$httpBackend_;
$rootScope = _$rootScope_;
jasmine.getJSONFixtures().fixturesPath='base/test/mock';
}));
it('should return an array of artists', function() {
$httpBackend.when('GET', api + '/search?q=Nirvana&type=artist').respond(
getJSONFixture('search.artist.json')
);
Spotify.search('Nirvana', 'artist').then(function (data) {
expect(data).toBeDefined();
expect(data.artists.items.length).toBeGreaterThan(0);
});
$httpBackend.flush(); //This line causes the error
});
});
und den Fehler, der herauskommt, ist:
✗ should return an array of artists
TypeError: 'undefined' is not a function (evaluating '$browser.$$checkUrlChange()')
at /Users/XXXX/Work/angular-spotify/bower_components/angular/angular.js:12502
at /Users/XXXX/Work/angular-spotify/bower_components/angular-mocks/angular-mocks.js:1438
at /Users/XXXX/Work/angular-spotify/test/spec/angular-spotify.spec.js:249
Linie 249 $ httpBackend.flush()
Ich verwende Karma-Jasmine und Lauftests durch PhantomJS.
- AngularJS: 1.2.24
- Winkel Mocks: 1.2.16
- Winkel-Szenario: 1.2.16
- Karma-Jasmin: 0.2.0
Warum $ würde httpBackend versucht, die URL im Browser zu ändern?
Jede Hilfe dazu wäre großartig.
Du hast recht, haha. Es war nur eine Version Missmatch zwischen eckigen und eckigen Mocks. –
große Antwort! Vielen Dank. – Rocco