我试图嘲笑 ui-router 文件的 $ state 中的解析功能,但我似乎无法得到它上班。这是我的路由器代码:
Index Date Time Reading Date 1 1 2 2 3 3 4 4
42005 1 1/1/2015 1:18:20 13.4 1/1/2015 1:18:20 13.4 6:04:59 8.7 21:16:57 21.1
42005 2 1/1/2015 6:04:59 8.7 1/2/2015 0:12:53 20.2 6:52:06 16.1 11:03:25 20.8 15:47:29 15.3
42005 3 1/1/2015 21:16:57 21.1 1/3/2015 0:06:23 13.4 6:31:24 19.3
42006 1 1/2/2015 0:12:53 20.2
42006 2 1/2/2015 6:52:06 16.1
42006 3 1/2/2015 11:03:25 20.8
42006 4 1/2/2015 15:47:29 15.3
42006 5 1/2/2015 16:36:51 12
42006 6 1/2/2015 20:11:22 9.1
42007 1 1/3/2015 0:06:23 13.4
42007 2 1/3/2015 6:31:24 19.3
这是我的Jasmine代码。我目前收到错误' fn'我运行测试时不是一个功能。
$stateProvider
.state('state.of.page', {
url: '/url-to-page',
template: require('./page-template.html'),
controller: 'PageCtrl',
controllerAs: 'page',
resolve: {
/**
* Cloning of page object in case user leaves page
* without saving
*/
pageObjClone: ['pageObj', function (pageObj) {
return angular.copy(pageObj);
}],
pageTemplate: ['template', function (template) {
return template;
}]
}
感谢您的帮助。
答案 0 :(得分:0)
...
var pageObj, template;
beforeEach(function() {
angular.mock.module('MyApp');
inject(function(..., _pageObj_, _template_) {
...
pageObj = _pageObj_;
template = _template_;
});
});
it('should resolve data', function() {
var state = $state.get(stateName);
expect($injector.invoke(state.resolve.pageObjClone)).toEqual(pageObj);
expect($injector.invoke(state.resolve.pageTemplate)).toBe(template);
});
根据复杂的解析器及其依赖关系的不同,依赖关系可以被模拟并注入解析器,例如
expect($injector.invoke(state.resolve.pageTemplate, null, { template: mockedTemplate }))
.toBe(mockedTemplate);