Мне нужно протестировать логику с данными, которые приходят с сервер, в контроллере. Но я не понимаю как нужно правильно написать тесты с mocha+chai.
Мой код:
angular
.module('WebApp', [])
.factory('api', function($q, $http){
return function(type, url, data){
var deferred = $q.defer(),
url = 'ConfigBaseUrl' + url; //'ConfigBaseUrl' меняется таской gulp-а из конфигурационного файла.
switch (type){
case 'GET':
$http.get(url)
.success(function (data) {
deferred.resolve(data);
})
.error(function (data) {
deferred.reject(data);
});
break;
case 'PUT':
$http.put(url, data)
.success(function (data) {
deferred.resolve(data);
})
.error(function (data) {
deferred.reject(data);
});
break;
case 'POST':
$http.post(url, data)
.success(function (data) {
deferred.resolve(data);
})
.error(function (data) {
deferred.reject(data);
});
break;
case 'DELETE':
$http.delete(url, data)
.success(function (data) {
deferred.resolve(data);
})
.error(function (data) {
deferred.reject(data);
});
break;
default:
console.log('');
return;
}
return deferred.promise;
}
})
.service('serverApi', function(api){
this.getList = function (url) {
return api('GET', url);
};
})
.constant('URL', {
LIST: '/api/list'
})
.controller('listCtrl', function($location, serverApi){
var pathLocation = $location.path(),
pathLocation = pathLocation.split('/');
serverApi.getList(URL.LIST+'/'+pathLocation[2]).then(successDataTable, errorDataTable);
function successDataTable(response){
//some logic
}
function errorDataTable(response){
//some logic
}
});
И код теста:
describe('CONTROLLER: listCtrl', function() {
var scope = null,
vm = null,
$q = null,
deferred = null,
$httpBackend = null;
beforeEach(module('WebApp'));
beforeEach(inject(function($rootScope, $controller, _$q_, _$httpBackend_) {
$q = _$q_;
scope = $rootScope.$new();
deferred = _$q_.defer();
$httpBackend = _$httpBackend_;
vm = $controller('gameCtrl', {$scope: scope});
}));
it('exist controller', function(){
expect(vm).to.exist;
});
it('send json data in successDataTable', function(){
//Что мне тут нужно написать?
});
})
В интернете есть примеры для jasmin, но я использую mocha+chai.
Подскажите пожалуйста как в тесте правильно передать данные в формате json для successDataTable.