Jasmine 测试抱怨 'undefined' 不是一个对象
Jasmine test complaining about 'undefined' is not an object
我已经检查了其他与我的问题类似的问题。但是这个问题显然在每种情况下都不同。
Angular茉莉花测试抱怨
类型错误:'undefined' 不是一个对象(正在评估 '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);
是您控制器中的一行,那么您需要在实例化控制器之前设置$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,
});
我已经检查了其他与我的问题类似的问题。但是这个问题显然在每种情况下都不同。 Angular茉莉花测试抱怨 类型错误:'undefined' 不是一个对象(正在评估 '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);
是您控制器中的一行,那么您需要在实例化控制器之前设置$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,
});