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不是一個函數」
任何幫助,將不勝感激
非常感謝! –