У меня есть приложение, которое вызывает нечетную ошибку при выполнении тестов. Ошибка заключается в следующем:Karma/Jasmine/PhantomJs: undefined не является конструктором
TypeError: undefined is not a constructor (evaluating 'allKeys[i].match(/^[0-9]+$/)') in node_modules/jasmine-core/lib/jasmine-core/jasmine.js (line 2988)
test/spec/core/http/response-spec.js:92:63
[email protected]://localhost:8080/context.js:151:17
Большинство из этих тестов проходит, но очень мало перерывов. Вот один из теста, который расщепляет:
(function() {
'use strict';
describe('MyAccount.core.http.response', function() {
var ResponseInterceptor = {},
$httpProvider = {},
$window = {},
env = {},
MessageQueue = {};
beforeEach(module('MyAccount.core.environment'));
beforeEach(module('MyAccount.core.http', function (_$httpProvider_, $provide) {
$httpProvider = _$httpProvider_;
MessageQueue = {
dispatch: jasmine.createSpy('dispatch')
};
$window = {
location: {
href: jasmine.createSpy()
}
};
$provide.value('$window', $window);
$provide.value('MessageQueue', MessageQueue);
}));
beforeEach(inject(function (_$window_, _ResponseInterceptor_, _env_) {
$window = _$window_;
ResponseInterceptor = _ResponseInterceptor_;
env = _env_;
}));
describe('response status', function() {
// Asserting that 404 and 403 errors are intercepted.
angular.forEach([404, 403], function (error) {
describe('is ' + error, function() {
beforeEach(function() {
ResponseInterceptor.responseError({
status: error,
data: {
message: 'error ' + error
}
});
});
it('calls MessageQueue.dispatch with the error message', function() {
expect(MessageQueue.dispatch).toHaveBeenCalledWith('error ' + error, {
on: 'global.errors'
});
});
});
});
});
});
})();
я застрял на том, что в течение нескольких часов в настоящее время и не может, кажется, найти решение. Вот зависимости я использую и их версии:
- карма:
^1.2.0
- жасмин-ядро:
^2.5.0
- карма-жасмин:
^1.0.2
- карма-phantomjs-пусковая:
^1.0.2
- phantomjs:
^2.1.7
ПРИМЕЧАНИЕ: Это бренд новое приложение yeoman
с использованием углового генератора.
Вы не единственный, у меня такая же проблема на этой неделе, и я в настоящее время отлаживаю ее. В моем случае я использую Maven/frontend-maven-plugin/Jasmine-Core/PhantomJS То, что я нашел до сих пор, в моем случае: это равные массивы, которые терпят неудачу. Да, равные массивы! Если у массивов есть отличия, тест не проходит обычным способом ([«a», 12] не равно [«b», 56]). Но все работает, если я запускаю Karma вручную в IntelliJ. Он не использует то же самое Jasmine Core (удаление Jasmine-Core, используемое Maven, не помешало ручному запуску), поэтому я думаю, что Jasmine-Core является виновником. –
Не могли бы вы подтвердить, что равные массивы - это те, которые не соответствуют вашим? –
@Darth_Sygnious У меня такая же проблема с массивом. В противном случае, если сравнивать с чем-то другим. Я попытаюсь понизить/обновить JasmineCore, чтобы убедиться, что это возможная причина ошибки. – lkartono