テストRoutes

3768 ワード

テストの目的:
  • ルーティングが利用可能かどうかをテストするか、
  • にリダイレクトする.
  • 正しいcontroller処理ルーティング
  • かどうかをテストする
    ルーティングをテストするときは、定義したルーティングルールが正しく実行されることを確認したいと思います.そのため、ルーティングが正常に動作しているか、自分でブロックされているか、リダイレクトされているか、いっそ見つからないかを確認する必要があります.$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");
      });
    
    });