我正在尝试对我创建的辅助函数执行一个简单的测试:
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'
})
我正在尝试将当前状态设置posts.details
为_id
1。然后测试我的辅助函数以查看它是否正确检索 ID。
但是,我在状态模板中遇到错误,如下所示:Unexpected request: GET /app/sections/posts/details/post-details.html
该状态posts.details
是一个孩子,posts
并且都有自己的模板,问题是我无法将两者都加载到templateCache
或者至少我无法弄清楚如何这样做。
是否可以加载两个模板以完成测试?