Я протестировал свой код javascript с жасмином, но когда я вижу, что у меня есть тесты на модульные тесты jenkins, у меня есть несколько строк, которые не отмечены зеленым (не проверены). Так вот почему я задаю свой вопрос:Angularjs frontend Jasmine unit test issue
-> Предполагая, что tagStyle.length = 0
$scope.isTagStylesNotEmpty = function() {
if($scope.tagStyles.length >= 0) /* This line is RED (not covered) */
{
return true;/* This line is Green OK*/
}
}
-> Мой тест заключается в следующем:
it('Unit test isTagStylesNotEmpty()', inject(function($httpBackend) {
expect($scope.isTagStylesNotEmpty).toBeDefined();
$scope.isTagStylesNotEmpty();
expect($scope.tagStyles.length).toBe(0);
}));
Любые идеи о том пункте?
Второй вопрос такой же, как и первый, но немного сложнее:
У меня есть следующий Javascript файл, который я хочу модульного тестирования с жасмином:
$scope.ajouterProfilTag = function(lastDocId) {
$scope.tagStyles.forEach(function(item) {
/*Not covered from here (by jenkins)--------------------*/
var profilTag = {
tag: item.id_tag,
texte: item.style,
profil: lastDocId,
tagName: item.label,
police: item.police,
taille: item.taille,
interligne: item.interligne ,
styleValue: item.styleValue,
};
$http.post('/ajouterProfilTag', profilTag)
.success(function(data) {
$scope.profilTagFlag = data; /* unit tests */
$scope.afficherProfils();
$scope.profilTag = {};
$scope.tagStyles.length = 0;
$scope.tagStyles = [];
/*Until here --------------------*/
});
});
$scope.tagList = {};
$scope.policeList = {};
$scope.tailleList = {};
$scope.interligneList = {};
$scope.weightList = {};
};
мой модульного тестирования является то, как это:
var profil = {
_id: "52d8f928548367ee2d000006",
photo: "./files/profilImage.jpg",
descriptif: "descriptif3",
niveauScolaire: "CM2",
type: "Dyslexie N2",
nom: "Nom3"
};
var profilTag = {
_id: "52d8f928548367ee2d000006",
tag: "tag",
texte: "texte",
profil: "profil",
tagName: "tagName",
police: "Arial",
taille: "eight",
interligne: "fourteen",
styleValue: "Bold"
}
beforeEach(inject(function($controller, $rootScope, $httpBackend) {
$scope = $rootScope.$new();
controller = $controller('ProfilesCtrl', {
$scope: $scope
});
$httpBackend.whenPOST('/ajouterProfilTag').respond(profilTag);
}));
it('ProfilesCtrl:ajouterProfilTag should set ajouterProfilTag function', inject(function($httpBackend) {
expect($scope.ajouterProfilTag).toBeDefined();
$scope.ajouterProfilTag(profil._id);
$httpBackend.flush();
expect($scope.profilTagFlag).toEqual(profilTag);
}));
Anyh идеи о том, как у меня есть к единице проверить мой второй метод (AjouterProfilTag) ?? Заранее спасибо
В вашей первой части. Как вам удалось заполнить $ scope для [чего-то] контроллера ?. Из вашего кода я предполагаю, что он не определен. – Dalorzo
Что касается вашей второй части, я думаю, это контроллер, не так ли? – Dalorzo
@ Dalorzo да, это контроллер, который я пытаюсь выполнить с жасмином. Я сделал следующее внутри перед каждым '$ scope = $ rootScope. $ New(); controller = $ controller ('ProfilesCtrl', { $ scope: $ scope }); ' – badaboum