我需要在我的控制器中编写一个作为过滤器的作用域函数。
$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
);
});
过滤器工作正常但是为它编写测试给我一个问题。任何帮助表示赞赏。
答案 0 :(得分:1)
最好使用实际范围进行测试,除非知道它不是:
var $scope = $rootScope.$new();
filterResults应该返回一个函数。所以它是
var filterResultsFn = $scope.filterResults('some_data');
expect(filterResultsFn).toEqual(jasmine.any(Function));
expect(filterResultsFn(...)).toEqual(...);