angularjs - Angular UI 网格 onRegisterApi 函数的 Jasmine 测试用例

标签 angularjs jasmine karma-jasmine

我正在为 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/

相关文章:

angularjs - 在 angularjs 中使用 angular-ui-bootstrap uib-pagination 时如何保持 ng-repeat 的 $index 计数

Angularjs - 在 Protractor e2e 测试中模拟触摸事件

javascript - 如何使用构造函数内的参数测试 angular2 类/服务?

javascript - Karma/Jasmine 在没有运行测试的情况下超时

angular - 测试 Angular 2 应用程序时如何正确使用 SharedModules 和 Router?

javascript - Angular 引导日期选择器在 dateDisabled 函数中禁用带有 $http 请求的日期

javascript - 重新排序后如何将项目添加到嵌套的 Angular-ui-tree 列表?

javascript - 使用 React 进行 Jasmine 功能测试

angularjs - 使用 AngularJS 裁剪图像

javascript - Sinon.js fakeServer 不使用响应方法触发回调