1
我正在尝试为我的角度控制器(写在打字稿)编写单元测试。控制器用户数据表。我需要在测试中将DTOptionsBuilder注入控制器,但无法弄清楚如何模拟它。这是我的代码到目前为止。Angular/Typescript单元测试与数据表
module MyApp.Controllers {
export class MyController {
dtOptions: any;
static $inject = [
"$scope"
];
constructor(
private $scope: IControllerScope,
private dtOptionsBuilder: any
) {
this.dtOptions = this.dtOptionsBuilder
.newOptions()
.withPaginationType('full_numbers')
.withDisplayLength(10)
.withOption('bInfo', false)
.withOption('bPaginate', false)
.withOption('searching', false)
.withOption('paging', false)
.withOption('order', [0, 'desc']);
}
}
}
describe("controller",() => {
var controller: MyApp.Controllers.MyController;
var dtOptionsBuilder: any;
beforeEach(angular.mock.module('app'));
beforeEach(angular.mock.module($provide => {
$provide.service('dtOptionsBuilder', function() {
this.newOptions = jasmine.createSpy('newOptions').and.callFake(() => {
return {};
});
this.withPaginationType = jasmine.createSpy('withPaginationType').and.callFake(() => {
return null;
});
this.withDisplayLength = jasmine.createSpy('withDisplayLength').and.callFake(() => {
return null;
});
this.withOption = jasmine.createSpy('withOption').and.callFake(() => {
return {};
});
});
return null;
}));
beforeEach(inject(function(_$controller_,_dtOptionsBuilder_, _$rootScope_) {
$scope = _$rootScope_.$new();
dtOptionsBuilder = _dtOptionsBuilder_;
controller = new MyApp.Controllers.MyController($scope, dtOptionsBuilder);
}));
describe("on creation ->",() => {
it("should initialize the controller",() => {
expect('test1').toBe('test1');
});
});
});
我得到一个错误 “this.dtOptionsBuilder.newOptions(...)。withPaginationType不是一个函数”
任何帮助,将不胜感激
非常感谢! –