Я пытаюсь проверить свои угловые призывы отдыха с кармой и жасмином. для начала я просто хочу, чтобы проверить мой Auth
службу и сделать простой вход.
describe('Auth Service', function () {
var httpBackend,
service;
beforeEach(function () {
angular.mock.module('mean');
inject(function ($httpBackend, Auth) {
httpBackend = $httpBackend;
httpBackend.expect('POST', '/auth/v1/login', { email: '[email protected]', password : 'password' }).respond({
response: {
success: true
}
});
service = Auth;
});
});
it('should login.', function () {
var result;
service.login('[email protected]', 'password').then(function (response) {
result = response;
});
httpBackend.flush();
// TODO
});
});
Я знаю, что этот код не будет работать так, как есть, но, к сожалению, я даже не дошел до того, чтобы проверить, правильно ли выполняется повторный вызов. Я получаю следующее исключение:
Error: Unexpected request: GET internationalization/locale-en.json
Expected POST /auth/login
locale-en.json
- один из моих файлов интернационализации, который я не упоминал нигде в этом тесте (или даже в службе Auth
).
здесь реализация функции входа в Auth
Service:
function login(email, password) {
var deferred = $q.defer();
$http.post('/auth/v1/login', {email: email, password: password})
.success(function (t) {
$localStorage.token = t;
deferred.resolve(t);
})
.error(function (err) {
deferred.reject(err);
});
return deferred.promise;
}
Откуда возникает случайный вызов GET для json и что я делаю неправильно здесь?
изменить: my karma.conf.js
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine',/* 'requirejs',*/ 'browserify'],
plugins: [
//'karma-requirejs',
'karma-jasmine',
'karma-browserify',
'karma-chrome-launcher'
],
files: [
'public/bower_components/angular.js'
// other bower_components
'node_modules/requirejs/require.js',
'node_modules/karma-requirejs/lib/adapter.js',
'public/app.js',
'public/config/*.js',
'public/controllers/**/*.js',
// services, directives, filters, internationalization just like the ctrl's
'public/tests/*.js'
},
exclude: [],
preprocessors: {
'public/tests/*.js': [ 'browserify' ]
},
// the rest is standard karma config
})};
Я прокомментировал require.js, так как всегда получаю ошибку
http://requirejs.org/docs/errors.html#mismatch
at /home/markus/git/dealscreening/node_modules/requirejs/require.js:140
которые я не могу исправить. Я также добавил файл test-main.js
для require.js (иначе я вообще не смог бы запустить тесты кармы)
var tests = [];
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
if (/Spec\.js$/.test(file)) {
tests.push(file);
console.log('requireJS:', file);
}
}
}
requirejs.config({
baseUrl: '/base',
paths: {},
deps: tests,
callback: window.__karma__.start
});
Вероятно, моя конфигурация кармы как-то не так, к сожалению, я действительно не знаю, как правильно ее настроить, так как ни один из обучающих программ, которые я прошел, по-видимому, не работает в моем проекте.
Пример проекта github:
https://github.com/markus138/karmatest
проверить его:
npm install
cd public
bower install
cd ..
npm test
версии: угловая 1.4.4 карма 0.13.9 жасмин 2.3.4
Вероятно, вы ссылаетесь на основной модуль в своем тесте. Поэтому обычно у вас есть определенный маршрутизатор с разными состояниями. Возможно, он пытается загрузить html, потому что вы определили его так. Вы можете пропустить игнорировать вызов, ответив 400 на ожидание. Приветствую