jasmine测试抱怨undefined不是一个对象
jasmine test complaining with undefined is not an object
我使用AngularJs,我需要用Jasmine测试init的元素,如下所示:
var init = function () {
_this.tenant = tenant.data;
_this.types = [
{ value: "true", label: "Tenant" },
{ value: "false", label: "Project" }
];
//Pre-select the good type
var index;
_.each(_this.types, function(data, idx) {
if(_.isEqual(data.value, String(_this.tenant.divisible))) {
index = idx;
}
});
_this.tenant.divisible = _this.types[index].value;
};
init();
但是有一个错误:
undefined不是对象(正在评估"a.types[t].value")
当我评论行:_this.tenant.divisible = _this.types[index].value;
所有测试构建成功。我无法正确测试这条线路。
这是我的测试:
describe('Controller: TenantEditCtrl', function () {
beforeEach(module('app'));
var ctrl;
var state;
beforeEach(inject(function ($state, $controller, $rootScope) {
state = $state.get('app.tenant_edit');
//TODO: test with proper data
ctrl = $controller('TenantEditCtrl', {
$scope: $rootScope.$new(),
tenant: {
data: {}
}
});
}));
it('should initialize state properly', function () {
expect(state.url).toEqual('/tenants/edit/:id');
});
it('should resolve data', function () {
expect(ctrl.tenant).not.toBeNull();
});
})
表达式_this.tenant.divisible = _this.types[index].value;
中的index
是undefined
,因为在测试中tenant.data
被设置为空对象,并且没有divisible
属性。当您在types
上迭代时,您将type.value
与"undefined"
进行比较,但找不到正确的类型。解决这个问题的一种方法是用正确的租户数据实例化控制器:
beforeEach(inject(function ($state, $controller, $rootScope) {
state = $state.get('app.tenant_edit');
ctrl = $controller('TenantEditCtrl', {
$scope: $rootScope.$new(),
tenant: {
data: {
// set divisible
divisible: true
}
}
});
}));
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Protractor:element.getText()返回一个对象,而不是String
- jasmine测试抱怨undefined不是一个对象
- TypeError:undefined不是一个对象(评估'c.trigger')
- TypeError:undefined不是一个对象(正在评估'msg.innerHTML="Uploa
- 可能的未处理承诺拒绝(id:0): undefined不是一个对象
- Angular-route: TypeError: undefined不是一个对象(求值'angular.mod
- JS: "TypeError: 'undefined'不是一个对象
- 列出一个对象的所有属性-对象1在undefined:1
- 如何在 AngularJS 中注入 PersistenceJS(undefined 不是一个对象(评估 'persist
- undefined不是一个对象(评估'$scope.students.pay')
- 为什么我得到这个错误'TypeError undefined不是一个对象…'包括Shopify链接产品选