У меня есть следующий очень простой тест, написанный для услуг AngularJS давал приложение:toEqualData согласовань ломает тесты в AngularJS приложении
describe('Services', function() {
beforeEach(function(){
this.addMatchers({
toEqualData: function(expected) {
return angular.equals(this.actual, expected);
}
});
});
beforeEach(module('myapp.services'));
describe('Album service', function(){
var Album;
beforeEach(inject(function (_Album_) {
Album = _Album_;
}));
it('can get an instance of the Album factory', inject(function (Album) {
expect(Album).toBeDefined();
}));
});
});
Я просто добавил обычай toEqualData согласовани as advised in the AngularJS documentation. Однако это нарушает тест. Я использую Gulp запустить тест с gulp-karma
(хотя тот же проблема возникает, если я использую Карму непосредственно), и я вижу следующее сообщение об ошибке:
$ gulp test
[10:00:04] Using gulpfile ~/Projects/myapp/gulpfile.js
[10:00:04] Starting 'jshint'...
[10:00:04] Starting 'karma'...
WARN `start` method is deprecated since 0.13. It will be removed in 0.14. Please use
server = new Server(config, [done])
server.start()
instead.
31 07 2015 10:00:04.362:INFO [karma]: Karma v0.13.3 server started at http://localhost:9876/
31 07 2015 10:00:04.368:INFO [launcher]: Starting browser PhantomJS
[10:00:04] Finished 'jshint' after 277 ms
31 07 2015 10:00:04.631:INFO [PhantomJS 1.9.8 (Linux 0.0.0)]: Connected on socket sFxRfQ6bJtqM_utNAAAA with id 27252937
PhantomJS 1.9.8 (Linux 0.0.0) Services Album service can get an instance of the Album factory FAILED
TypeError: 'undefined' is not a function (evaluating 'this.addMatchers')
at /home/matthew/Projects/myapp/tests/services.tests.js:7
PhantomJS 1.9.8 (Linux 0.0.0): Executed 7 of 7 (1 FAILED) (0.04 secs/0.022 secs)
[10:00:04] Finished 'karma' after 558 ms
[10:00:04] Starting 'test'...
[10:00:04] Finished 'test' after 11 μs
Я не могу видеть, где я прошла криво , Есть идеи? На самом деле это нормально работает, если я вывожу пользовательский сокет, который я пока еще не использую, но планирую это сделать. Таким образом, похоже, что виновником является преступник, но поскольку он буквально скопирован и вставлен из документации Angular, я не понимаю, почему он не работает.
Нет, не имеет значения. Если я выберу пользовательский соединитель, все это сработает, что подсказывает мне, что, вероятно, именно в этом и заключается проблема. –
Вы правы, извините. Ошибка, кажется, указывает на то, что 'угловые.элементы' не определены. Можете ли вы подтвердить, что это так? – illiptic
Хмм ... 'this.addMatchers' отображается как неопределенный, когда я показываю его с помощью' console.log() ', который, я думаю, может быть источником проблемы –