Javascript Jasmine Karma单元测试json.parse函数

Javascript Jasmine Karma单元测试json.parse函数,javascript,json,angularjs,jasmine,karma-runner,Javascript,Json,Angularjs,Jasmine,Karma Runner,我试图用Jasmine框架对这一行javascript进行单元测试: $scope.validerStyleTag = function() { $scope.currentTag = JSON.parse($scope.tagList); for (var i = $scope.listTags.length - 1; i >= 0; i--) { if ($scope.listTags[i]._id === $scope.currentTag._id)

我试图用Jasmine框架对这一行javascript进行单元测试:

$scope.validerStyleTag = function() {
    $scope.currentTag = JSON.parse($scope.tagList);
    for (var i = $scope.listTags.length - 1; i >= 0; i--) {
        if ($scope.listTags[i]._id === $scope.currentTag._id) {
            $scope.tagID = $scope.listTags[i]._id;
            $scope.listTags[i].disabled = true;
            break;
        }
    }

    // var textestyler = angular.element(document.querySelector('#style-affected-add'))[0].outerHTML;
    // var debut = textestyler.substring(textestyler.indexOf('<p'), textestyler.indexOf('>') + 1);
    // var texteFinal = debut + '</p>';
    var mytext = '<p data-font="' + $scope.policeList + '" data-size="' + $scope.tailleList + '" data-lineheight="' + $scope.interligneList + '" data-weight="' + $scope.weightList + '" data-coloration="' + $scope.colorList + '"> </p>';


    $scope.tagStyles.push({
        id_tag: $scope.currentTag._id,
        style: mytext,
        label: $scope.currentTag.libelle,
        police: $scope.policeList,
        taille: $scope.tailleList,
        interligne: $scope.interligneList,
        styleValue: $scope.weightList,
        coloration: $scope.colorList,

    });
    angular.element($('.shown-text-add').text($('.shown-text-add').text()));
    angular.element($('#style-affected-add').removeAttr('style'));
    $scope.colorationCount = 0;
    $scope.tagList = null;
    $scope.policeList = null;
    $scope.tailleList = null;
    $scope.interligneList = null;
    $scope.weightList = null;
    $scope.colorList = null;

};
当我开始这样编写单元测试并调用函数时:

it('ProfilesCtrl:validerStyleTag should set validerStyleTag ', inject(function() {
expect($scope.validerStyleTag).toBeDefined();
$scope.validerStyleTag();


}));
karma给了我一个意外的错误:TypeError:试图在workFn(/home/app/bower\u components/angular mocks/angular mocks.js:2107)分配给只读属性


想法或反馈是非常受欢迎的

您是否将PhantomJS与Angular的“旧”版本一起使用?导致该错误的错误最近已被修复。如果我读得正确的话,看起来它是在1.2.12中修复的


您是否将PhantomJS与Angular的“旧”版本一起使用?导致该错误的错误最近已被修复。如果我读得正确的话,看起来它是在1.2.12中修复的@CraigSquire谢谢你的回答,那么我该如何更新我的Angularjs版本呢?还有phantomJs版本?顺便说一句,实际上是有缺陷的角度模拟。让我知道更新是否修复了它。很好。上周我遇到了同样的问题。
it('ProfilesCtrl:validerStyleTag should set validerStyleTag ', inject(function() {
expect($scope.validerStyleTag).toBeDefined();
$scope.validerStyleTag();


}));