作成したヘルパー関数で簡単なテストを実行しようとしています:
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
できないか、少なくともその方法がわかりません。
テストを満たすために両方のテンプレートをロードすることは可能ですか?