使用Jasmine& amp;角

时间:2015-11-02 23:37:02

标签: angularjs unit-testing jasmine

我试图嘲笑 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;
    }]
}

感谢您的帮助。

1 个答案:

答案 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);