テストRoutes
テストの目的:ルーティングが利用可能かどうかをテストするか、 にリダイレクトする.正しいcontroller処理ルーティング かどうかをテストする
ルーティングをテストするときは、定義したルーティングルールが正しく実行されることを確認したいと思います.そのため、ルーティングが正常に動作しているか、自分でブロックされているか、リダイレクトされているか、いっそ見つからないかを確認する必要があります.$routeChangeErrorイベントがトリガーされると、404ページが表示されるはずです.テンプレートがViewにロードされているかどうかを確認する必要があります.最高のテスト分類は、MidwayテストとE 2 Eテストであるべきです.
では、AngularJSでMidwayとE 2 Eでルーティングをテストする方法を見てみましょう.
Midwayテスト:
E 2 Eテスト
ルーティングをテストするときは、定義したルーティングルールが正しく実行されることを確認したいと思います.そのため、ルーティングが正常に動作しているか、自分でブロックされているか、リダイレクトされているか、いっそ見つからないかを確認する必要があります.$routeChangeErrorイベントがトリガーされると、404ページが表示されるはずです.テンプレートがViewにロードされているかどうかを確認する必要があります.最高のテスト分類は、MidwayテストとE 2 Eテストであるべきです.
では、AngularJSでMidwayとE 2 Eでルーティングをテストする方法を見てみましょう.
Midwayテスト:
<!-- lang: js -->
//
// test/midway/routesSpec.js
//
describe("Midway: Testing Routes", function() {
var tester;
beforeEach(function() {
tester = ngMidwayTester('App');
});
afterEach(function() {
tester.destroy();
tester = null;
});
it("should have a working videos_path route", function() {
expect(ROUTER.routeDefined('videos_path')).to.equal(true);
var url = ROUTER.routePath('videos_path');
expect(url).to.equal('/videos');
});
it("should have a videos_path route that should goto the VideosCtrl controller", function() {
var route = ROUTER.getRoute('videos_path');
route.params.controller.should.equal('VideosCtrl');
});
it("should have a working video_path route", function() {
expect(ROUTER.routeDefined('video_path')).to.equal(true);
var url = ROUTER.routePath('video_path', { id : 10 });
expect(url).to.equal('/videos/10');
});
it("should have a videos_path route that should goto the VideoCtrl controller", function() {
var route = ROUTER.getRoute('video_path');
route.params.controller.should.equal('VideoCtrl');
});
it("should have a working watched_videos_path route", function() {
expect(ROUTER.routeDefined('watched_videos_path')).to.equal(true);
var url = ROUTER.routePath('watched_videos_path');
expect(url).to.equal('/watched-videos');
});
it("should have a videos_path route that should goto the WatchedVideosCtrl controller", function() {
var route = ROUTER.getRoute('watched_videos_path');
route.params.controller.should.equal('WatchedVideosCtrl');
});
it("should have a home_path route that should be the same as the videos_path route", function() {
expect(ROUTER.routeDefined('home_path')).to.equal(true);
var url1 = ROUTER.routePath('home_path');
var url2 = ROUTER.routePath('videos_path');
expect(url1).to.equal(url2);
});
it("should have a home_path route that should goto the VideosCtrl controller", function() {
var route = ROUTER.getRoute('home_path');
route.params.controller.should.equal('VideosCtrl');
});
});
E 2 Eテスト
<!-- lang: js -->
//
// test/e2e/routesSpec.js
//
describe("E2E: Testing Routes", function() {
beforeEach(function() {
browser().navigateTo('/');
});
it('should jump to the /videos path when / is accessed', function() {
browser().navigateTo('#/');
expect(browser().location().path()).toBe("/videos");
});
it('should have a working /videos route', function() {
browser().navigateTo('#/videos');
expect(browser().location().path()).toBe("/videos");
});
it('should have a working /wathced-videos route', function() {
browser().navigateTo('#/watched-videos');
expect(browser().location().path()).toBe("/watched-videos");
});
it('should have a working /videos/ID route', function() {
browser().navigateTo('#/videos/10');
expect(browser().location().path()).toBe("/videos/10");
});
});