我正试图用业力和茉莉来测试我的角度休息。对于初学者我只想测试我的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: 'my@email.com', password : 'password' }).respond({
response: {
success: true
}
});
service = Auth;
});
});
it('should login.', function () {
var result;
service.login('my@email.com', '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
服务中的登录功能的实现:
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的调用来自哪里,我在这里做错了什么?
编辑我的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
我似乎无法修复。我还为require.js添加了一个test-main.js
文件(否则我根本无法运行karma测试)
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