javascript - Jasmine 测试提示 'undefined' 不是对象

标签 javascript angularjs jasmine karma-jasmine

我已经检查了与我的问题类似的其他问题。但是这个问题显然在每种情况下都不同。 Angular Jasmine 测试提示 TypeError: 'undefined' is not an object (evaluating 'fields.forEach') 在 discoverDependentFields

这是我的 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);

是你 Controller 中的一行,那么你需要在实例化 Controller 之前设置$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,
});

关于javascript - Jasmine 测试提示 'undefined' 不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469961/

相关文章:

javascript - 如何在 Jasmine 中模拟 DOM 元素以便 Controller 可以访问它?

javascript - 单元测试的重构(Jasmine)

javascript - PhantomJS- 默认使用 LocalStorage 打开页面

javascript - 在按钮单击时隐藏 uib 弹出窗口不起作用

css - AngularJS Material 日期选择器未对齐

angular - 空注入(inject)器错误: StaticInjectorError[[object Object]]

javascript - 初学者 : How to fix 'ReferenceError myFunc is not defined' in JavaScript

javascript - 未捕获的类型错误 : Cannot read property 'setRGB' of undefined

javascript - Uncaught ReferenceError : mapInitialised is not defined

angularjs - AngularJS 中的 ng-click 和 data-ng-click 有什么区别?