テストFilters
テストの目的ユニットでテストフィルタの入出力 をテストする. scope範囲のDOMの総Html要素をテストして を正しく処理する.
AngularJSフィルタをテストするには、$injectorサービスを使用し、注入器から$filterサービスを取得し、ここからページに含めるサービスをすべてテストします.フィルタはすべての3つの方法でテストできますが、それぞれの方法が異なります.
基本的には、フィルタをテストします.つまり、入出力(多くの場合、配列)を見たいと思っています.あなたのE 2 Eテストでは、フィルタがページに作用しているかどうかを確認します.
ユニットテスト
Midwayテスト:
E 2 Eテスト:
AngularJSフィルタをテストするには、$injectorサービスを使用し、注入器から$filterサービスを取得し、ここからページに含めるサービスをすべてテストします.フィルタはすべての3つの方法でテストできますが、それぞれの方法が異なります.
基本的には、フィルタをテストします.つまり、入出力(多くの場合、配列)を見たいと思っています.あなたのE 2 Eテストでは、フィルタがページに作用しているかどうかを確認します.
ユニットテスト
<!-- lang: js -->
//
// test/unit/filters/filtersSpec.js
//
describe("Unit: Testing Filters", function() {
beforeEach(module('App'));
it('should have a range filter', inject(function($filter) {
expect($filter('range')).not.to.equal(null);
}));
it('should have a range filter that produces an array of numbers',
inject(function($filter) {
var range = $filter('range')([], 5);
expect(range.length).to.equal(5);
expect(range[0]).to.equal(0);
expect(range[1]).to.equal(1);
expect(range[2]).to.equal(2);
expect(range[3]).to.equal(3);
expect(range[4]).to.equal(4);
}));
it('should return null when nothing is set',
inject(function($filter) {
var range = $filter('range')();
expect(range).to.equal(null);
}));
it('should return the input when no number is set',
inject(function($filter) {
var range, input = [1];
range = $filter('range')(input);
expect(range).to.equal(input);
range = $filter('range')(input, 0);
expect(range).to.equal(input);
range = $filter('range')(input, -1);
expect(range).to.equal(input);
range = $filter('range')(input, 'Abc');
expect(range).to.equal(input);
}));
});
Midwayテスト:
<!-- lang: js -->
//
// test/midway/filters/filtersSpec.js
//
describe("Midway: Testing Filters", function() {
var tester;
beforeEach(function() {
tester = ngMidwayTester('App');
});
afterEach(function() {
tester.destroy();
tester = null;
});
it('should have a working range filter',
function() {
expect(tester.inject('$filter')('range')).not.to.equal(null);
});
it('should have a working filter that updates the DOM',
function(done) {
var id = 'temp-filter-test-element';
var html = '<div id="' + id + '"><div class="repeated" ng-repeat="n in [] | range:10">...</div></div>';
var element = angular.element(html);
var scope = tester.rootScope().$new();
tester.compile(element, scope);
var elm = element[0];
setTimeout(function() {
var kids = elm.getElementsByTagName('div');
expect(kids.length).to.equal(10);
done();
},1000);
});
});
E 2 Eテスト:
<!-- lang: js -->
//
// test/e2e/filters/filtersSpec.js
//
describe("E2E: Testing Filters", function() {
beforeEach(function() {
browser().navigateTo('/');
});
it('should have a filter that expands the stars properly', function() {
browser().navigateTo('#/videos/zogrnQjHZAM');
expect(repeater('#app-youtube-stars > .app-youtube-star').count()).toBeGreaterThan(0);
});
});