簡體   English   中英

茉莉花測試抱怨“未定義”不是對象

[英]Jasmine test complaining about 'undefined' is not an object

我已經檢查了與我的問題類似的其他問題。 但是這個問題顯然在每種情況下都是不同的。 Angular Jasmine Test抱怨TypeError:在DiscoverDependentFields中,“未定義”不是對象(正在評估“ fields.forEach”)

這是我的discoverDependentFields函數

discoverDependentFields($scope.response.Fields);

function discoverDependentFields(fields) {
    fields.forEach(function (field) {
        field.DependencyFieldEvaluated = '';
        if (field.DependencyField) {
            var foundFields = fields.filter(function (fieldToFind) { return fieldToFind.Name === field.DependencyField; });
            if (foundFields.length === 1) {
                field.DependencyFieldEvaluated = foundFields[0];
            }
        }
    });
}

在測試中我有這個

        this.controller('MyController', {
            '$scope': this.scope,                              
            }
        });

 this.scope.response.Fields = [
                {
                    Name: "UserIdentity",
                    Value: {
                        "FirstName": "John"
                    },
                    PropertyName: "User.Identity"
                }
            ];

我在這樣的指令中的函數中使用field.DependencyFieldEvaluated的值

function dependencyMet(field) {
                    var dependentField = field.DependencyFieldEvaluated;

                    var met = compareToDependencyValue(field, dependentField.Value);
                    return met;
                }

我不知道為什么要抱怨

如果

discoverDependentFields($scope.response.Fields);

是控制器中的一行,那么需要實例化控制器之前設置$scope.response.Fields數據。 換句話說,將測試中的操作順序交換為

this.scope = {};
// or maybe this.scope = $rootScope.$new()

this.scope.response = {
    Fields: [{
        Name: "UserIdentity",
        Value: {
            FirstName: "John"
        },
        PropertyName: "User.Identity"
    }]
};

this.controller('MyController', {
    $scope: this.scope,
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM