单元测试用作过滤器的作用域函数
Unit testing a scoped function used as a filter
我需要在我的控制器中编写一个作用域函数来充当过滤器。
$scope.filterR = function(s) {
return function(c) {
for (var prop in c) {
if (c[prop].toSomething() >= 0) {
return c;
break;
}
}
}
}
这就是我的使用方式。
<div ng-repeat="c in cus | filter: filterR(s)">
</div>
我面临的问题是如何在 karma-jasmine 中测试这个特定的例程。
我目前的测试是这样的,
describe('check x', function () {
it('check abc', function () {
var $scope = {};
var controller = $controller('SController', {
$scope: $scope
});
expect($scope.filterResults('some_data')).toEqual(
some_data
);
});
过滤器工作正常,但为它编写测试给了我一个问题。感谢任何帮助。
最好使用真实范围进行测试,除非知道它不是:
var $scope = $rootScope.$new();
filterResults 应该是 return 一个函数。所以是
var filterResultsFn = $scope.filterResults('some_data');
expect(filterResultsFn).toEqual(jasmine.any(Function));
expect(filterResultsFn(...)).toEqual(...);
我需要在我的控制器中编写一个作用域函数来充当过滤器。
$scope.filterR = function(s) {
return function(c) {
for (var prop in c) {
if (c[prop].toSomething() >= 0) {
return c;
break;
}
}
}
}
这就是我的使用方式。
<div ng-repeat="c in cus | filter: filterR(s)">
</div>
我面临的问题是如何在 karma-jasmine 中测试这个特定的例程。
我目前的测试是这样的,
describe('check x', function () {
it('check abc', function () {
var $scope = {};
var controller = $controller('SController', {
$scope: $scope
});
expect($scope.filterResults('some_data')).toEqual(
some_data
);
});
过滤器工作正常,但为它编写测试给了我一个问题。感谢任何帮助。
最好使用真实范围进行测试,除非知道它不是:
var $scope = $rootScope.$new();
filterResults 应该是 return 一个函数。所以是
var filterResultsFn = $scope.filterResults('some_data');
expect(filterResultsFn).toEqual(jasmine.any(Function));
expect(filterResultsFn(...)).toEqual(...);