这是我的控制器:
export class testController { static $inject: string[] = ["testService","$mdDialog","$state"]; constructor(public _testService: services.testService,private _mdDialog: any,private _$state: any) { this.isCurrentlyEditing = false; this.activate(); } }
这是我的单元测试:
import {test as service} from './test.service'; import {test as ctrl} from './test.controller'; export function main() { describe("testController",() => { var mdDialog: angular.material.IDialogService; var state: ng.ui.IStateService; var testService: any; var controller: any; beforeEach(function () { angular.mock.module('comp.modules.addField'); }); beforeEach(function () { testService = { showCLULayer: () => { } }; }); beforeEach(module('comp')); beforeEach(inject(($injector: any) => { mdDialog = $injector.get('$mdDialog'); state = $injector.get('$state'); testService = $injector.get('testService'); controller = new ctrl.testController(testService,mdDialog,state); })); it("should Create Controller",() => { controller = new ctrl.testController(testService,state); spyOn(testService,'showCLULayer').and.callThrough(); expect(controller).not.toBeNull(); expect(controller.activate).toHaveBeenCalled(); ////error Expected a spy,but got Function. }); }); }
当测试到达该行时,测试会抛出错误:
expect(controller.activate).toHaveBeenCalled();
说,期待一个间谍,但得到了功能. Activate是一个函数,当我调用我正在测试的控制器的构造函数时调用它.有人可以指出我正确的方向.
尝试添加线
spyOn(controller,'activate');
在期待之前,我收到以下错误.
Expected spy activate to have been called. Error: Expected spy activate to have been called.
在测试是否调用函数之前,您需要监视函数.试试这个:
it("should Create Controller",'showCLULayer').and.callThrough(); expect(controller).not.toBeNull(); spyOn(controller,'activate'); // < ------------Spy on the function expect(controller.activate).toHaveBeenCalled(); ////error Expected a spy,but got Function. });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。