我正在为 AngularJS UI 网格编写 Jasmine 单元测试。 我的 Controller 中有一个下面的 UI 网格函数 代码:
$scope.gridOption.onRegisterApi = function(gridApi) {
$scope.gridApi.core.on.sortChanged($scope, function(grid, sortColumns) {};
gridApi.pagination.on.paginationChanged($scope, function(newPage, pageSize) {};
};
我不知道如何为这个函数和内部私有(private)函数编写单元测试用例....
谁能帮我解决这个问题?
提前致谢!!!
最佳答案
首先您需要$compile ui-grid,然后是scope.digest,这样您就可以在测试中访问gridApi 方法,例如:
scope.myGridApi.selection.getSelectedRows();
更新
第 1 步。
createMycontroller();//在你配置和注入(inject)依赖之后
第 2 步. 编译 ui 网格:
var gridContainer = "< div ui-grid="myGridOptions" ui-grid-pagination></div>";
var grid = $compile(gridContainer)(scope); // I've declared scope before as scope = $rootScope.$new();
scope.$digest();
在这个阶段,应该编译 ui 网格,在我的例子中,myGridApi 在范围内
第三步通过raise方法触发paginationChanged
scope.myGridApi.pagination.raise.paginationChanged();
我在 ui 网格单元测试中找到了 raise 方法: https://github.com/angular-ui/ui-grid/blob/9d1a0b46e54983e09e0be8f89f9fac0ee74046e4/test/unit/core/factories/GridApi.spec.js#L26 并且作为 api 文档的一部分:
http://ui-grid.info/docs/#/api/ui.grid.class:GridApi
当您注册事件时,它将:
“该事件将在其前面加上 .raise 和 .on .raise.eventName() - 不带任何参数”
第四步设定你的期望
关于angularjs - Angular UI 网格 onRegisterApi 函数的 Jasmine 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32969935/