0

作成したヘルパー関数で簡単なテストを実行しようとしています:

    function getPostId() {
        return $stateParams._id;
    }

そして、これが私が使用しているテストです。getService は単に Angularinject()関数のラッパーであることに注意してください。

describe('wpApp Router', function() {

    var $state, $stateParams, Router;

    beforeEach(module('wpApp.core.router'));
    beforeEach(function() {
        $state = getService('$state');
        $scope = getService('$rootScope');
        $stateParams = getService('$stateParams');
        Router = getService('Router');
        $templateCache = getService('$templateCache');

        $templateCache.put('/app/sections/posts/list/post-list.html', '');
    });

    it('should provide the current post ID', function() {
        $state.go('posts.details', { _id: 1 });
        $scope.$digest();
        expect(Router.getPostId()).to.equal(1);
    });
});

私のルーターは次のようになります。

    $stateProvider
        .state('posts', {
            url: '/posts',
            controller: 'PostsListController as postsList',
            templateUrl: '/app/sections/posts/list/post-list.html'
        })

        .state('posts.details', {
            url: '/:_id',
            controller: 'PostDetailsController as postDetails',
            templateUrl: '/app/sections/posts/details/post-details.html'
        })

現在の状態を 1 に設定しようとしてposts.details_idます。次に、ヘルパー関数をテストして、ID が正しく取得されているかどうかを確認します。

ただし、次のような状態のテンプレートでエラーが発生します。Unexpected request: GET /app/sections/posts/details/post-details.html

状態posts.detailsは の子でpostsあり、両方とも独自のテンプレートを持っています。問題は、両方を にロードtemplateCacheできないか、少なくともその方法がわかりません。

テストを満たすために両方のテンプレートをロードすることは可能ですか?

4

1 に答える 1