angularjs单元测试元素$onInit绑定未定义 成分 测试 从“/index”导入accountModule; 描述('账户',()=>{ beforeach(angular.mock.module(accountModule)); 让onLogoutSpy=jasmine.createSpy('onLogout'); 常量绑定={ 用户:{ “名字”:“我”, “姓氏”:“你” }, onLogout:onLogoutSpy }; 让控制器, 根镜, 范围 描述('Controller',()=>{ 每次之前(注入($injector)=>{ rootScope=$injector.get(“$rootScope”); scope=rootScope.$new(); 常量$componentController=$injector.get(“$componentController”); 控制器=$componentController('appAccount',{$scope:scope},绑定); 控制器。$onInit(); })); 它('应该附加到范围',()=>{ expect(scope.$ctrl).toBe(controller); }); 它('isVisibled应该为false',()=>{ expect(controller.isVisibled).toBe(false); }); 它('全名应该是我你',()=>{ expect(controller.fullname).toEqual('me-you'); }); 它('isVisibled应该为true',()=>{ controller.show(); expect(controller.isVisibled).toBe(true); }); 它('应该只调用了onLogout',()=>{ controller.logout(); expect(onLogoutSpy).tohavebeincall(); }); }); 描述('组件',()=>{ 让元素、范围; beforeach(注入($rootScope,$compile)=>{ 转储(bindings.user); scope=$rootScope.$new(); 常量标记=` `; 元素=角度。元素(标记); 元素=$compile(元素)(范围); 让elementController=element.controller('app-account'); 范围。$digest(); elementController.$onInit(); })); 它('xxx',()=>{ //转储(元素); //const backendHeader=element.find('backend-header').eq(0); //expect(backendHeader.toBeDefined(); }); }); });
给我 1)xxx 帐户组件 TypeError:无法读取未定义的属性“firstName”angularjs单元测试元素$onInit绑定未定义 成分 测试 从“/index”导入accountModule; 描述('账户',()=>{ beforeach(angular.mock.module(accountModule)); 让onLogoutSpy=jasmine.createSpy('onLogout'); 常量绑定={ 用户:{ “名字”:“我”, “姓氏”:“你” }, onLogout:onLogoutSpy }; 让控制器, 根镜, 范围 描述('Controller',()=>{ 每次之前(注入($injector)=>{ rootScope=$injector.get(“$rootScope”); scope=rootScope.$new(); 常量$componentController=$injector.get(“$componentController”); 控制器=$componentController('appAccount',{$scope:scope},绑定); 控制器。$onInit(); })); 它('应该附加到范围',()=>{ expect(scope.$ctrl).toBe(controller); }); 它('isVisibled应该为false',()=>{ expect(controller.isVisibled).toBe(false); }); 它('全名应该是我你',()=>{ expect(controller.fullname).toEqual('me-you'); }); 它('isVisibled应该为true',()=>{ controller.show(); expect(controller.isVisibled).toBe(true); }); 它('应该只调用了onLogout',()=>{ controller.logout(); expect(onLogoutSpy).tohavebeincall(); }); }); 描述('组件',()=>{ 让元素、范围; beforeach(注入($rootScope,$compile)=>{ 转储(bindings.user); scope=$rootScope.$new(); 常量标记=` `; 元素=角度。元素(标记); 元素=$compile(元素)(范围); 让elementController=element.controller('app-account'); 范围。$digest(); elementController.$onInit(); })); 它('xxx',()=>{ //转储(元素); //const backendHeader=element.find('backend-header').eq(0); //expect(backendHeader.toBeDefined(); }); }); });,angularjs,unit-testing,Angularjs,Unit Testing,给我 1)xxx 帐户组件 TypeError:无法读取未定义的属性“firstName” 你能帮我解决一下吗?我想你应该写: beforeEach(inject(($rootScope, $compile) => { scope = $rootScope.$new(); scope.user = { firstName "me", lastName : "you" } element = $compile(`<app-account user="use
你能帮我解决一下吗?我想你应该写:
beforeEach(inject(($rootScope, $compile) => {
scope = $rootScope.$new();
scope.user = {
firstName "me",
lastName : "you"
}
element = $compile(`<app-account user="user"></app-account>`)(scope);
let elementController = element.controller('app-account');
scope.$digest();
}));
beforeach(注入($rootScope,$compile)=>{
scope=$rootScope.$new();
scope.user={
名字“我”,
姓:“你”
}
元素=$compile(``)(范围);
让elementController=element.controller('app-account');
范围。$digest();
}));
您正在传递绑定对象的用户obj,它必须是作用域的用户obj。在第二次测试中,您没有将
绑定分配给作用域
scope = $rootScope.$new();
scope.bindings = bindings; // -------v
const markup = '<app-account user="bindings.user"></app-account>';
scope=$rootScope.$new();
scope.bindings=绑定;//-------v
常量标记=“”;
import accountModule from './index';
describe('Account', () => {
beforeEach(angular.mock.module(accountModule));
let onLogoutSpy = jasmine.createSpy('onLogout');
const bindings = {
user: {
"firstName" : "me",
"lastName" : "you"
},
onLogout: onLogoutSpy
};
let controller,
rootScope,
scope;
describe('Controller', () => {
beforeEach(inject( ($injector) => {
rootScope = $injector.get('$rootScope');
scope = rootScope.$new();
const $componentController = $injector.get('$componentController');
controller = $componentController('appAccount',{$scope:scope},bindings);
controller.$onInit();
}));
it('should be attached to the scope', () => {
expect(scope.$ctrl).toBe(controller);
});
it('isVisibled should be false', () => {
expect(controller.isVisibled).toBe(false);
});
it('fullname should be me you', () => {
expect(controller.fullname).toEqual('me you');
});
it('isVisibled should be true', () => {
controller.show();
expect(controller.isVisibled).toBe(true);
});
it('should onLogout have been called', () => {
controller.logout();
expect(onLogoutSpy).toHaveBeenCalled();
});
});
describe('Component', () => {
let element,scope;
beforeEach(inject(($rootScope, $compile) => {
dump(bindings.user);
scope = $rootScope.$new();
const markup = `
<app-account user="bindings.user"></app-account>
`;
element = angular.element(markup);
element = $compile(element)(scope);
let elementController = element.controller('app-account');
scope.$digest();
elementController.$onInit();
}));
it('xxx', () => {
//dump(element);
//const backendHeader = element.find('backend-header').eq(0);
//expect(backendHeader).toBeDefined();
});
});
});
beforeEach(inject(($rootScope, $compile) => {
scope = $rootScope.$new();
scope.user = {
firstName "me",
lastName : "you"
}
element = $compile(`<app-account user="user"></app-account>`)(scope);
let elementController = element.controller('app-account');
scope.$digest();
}));
scope = $rootScope.$new();
scope.bindings = bindings; // -------v
const markup = '<app-account user="bindings.user"></app-account>';