2014-03-26 32 views
0

我们试图用茉莉花测试角度控制器。角度已经到位,我们对它和茉莉花都是新的。jasmine.Clock.tick(500)给出TypeError:'undefined'不是函数(评估'jasmine.Clock.tick(500)')

使用以下:

  • AngularJS 1.2.2
  • 茉莉2.0.0
  • VS 2013

这里是控制器

angular.module('workforce.App').controller('ClockController', ['$scope', '$timeout', function ClockCtrl($scope, $timeout) { 

(function update() { 
    $scope.dt = new Date(); 

    //---------------------------------------------------------------------- 
    // Auto-refreshes the clock every 5 seconds to stay current 
    //---------------------------------------------------------------------- 
    $timeout(update, 5000); 
}()); 
}]); 

这里是规格

/// <reference path="../../scripts/jasmine.js" /> 
/// <reference path="../../../webclient/scripts/angular.js" /> 
/// <reference path="../../../webclient/scripts/angular-resource.js" /> 
/// <reference path="../../../webclient/scripts/angular-mocks.js" /> 
/// <reference path="../../../webclient/angular/app.js" /> 
/// <reference path="../../../webclient/angular/homebase/common/clockcontroller.js" /> 
/// <reference path="../../../webclient/scripts/api/api.date.js" /> 
/// <reference path="../../../webclient/scripts/ui-bootstrap-0.10.0.js" /> 
/// <reference path="../../../webclient/scripts/checklist-model.js" /> 

describe('clock', function() { 

var scope, timeout, createController; 

beforeEach(function() { 
    angular.mock.module('workforce.App'); 

    inject(function ($rootScope, $controller, $injector) { 
     scope = $rootScope.$new(); 
     timeout = $injector.get('$timeout'); 
     //jasmine.Env({}); 
     jasmine.Clock.install; 
     $controller = $injector.get('$controller'); 

     createController = function() { 
      return $controller('ClockController', { 
       '$scope': scope, 
       '$timeout': timeout 
      }); 
     }; 
    }); 
}); 

afterEach(function() { 
    jasmine.Clock.uninstall; 
}); 

it('scope.dt should contain value', function() { 
    createController(); 
    expect(scope.dt).toBeTruthy(); 
}); 

it('scope.dt should contain value 2', function() { 
    createController(); 
    var date1 = scope.dt; 
    jasmine.Clock.tick(500); 
    expect(scope.dt).toBeGreaterThan(date1); 
}); 
}); 

以下是错误消息

测试名称:时钟scope.dt应包含数值2 试验全名:C:\根\次世代\项目\分期\溶液\应用\ webclient.angular.test \ homebase \ common \ clockcontrollerspec.js :: clock :: scope.dt应该包含值2 测试来源:c:\ root \ nextgen \ projects \ staging \ solution \ applications \ webclient.angular.test \ homebase \ common \ clockcontrollerspec .js:第43行 测试结果:失败 测试持续时间:0:00:00.003

结果消息:TypeError:'undefined'不是函数(评估'jasmine.Clock.tick(500)')在file:/// c:/root/nextgen/projects/staging/solution/applications/webclient.angular.test/ homebase/common/clockcontrollerspec.js(第46行) at file:/// c:/root/nextgen/projects/staging/solution/applications/webclient.angular.test/homebase/common/clockcontrollerspec.js:46 at attemptSync(file:/// C:/USERS/MWHEELER/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/12.0/EXTENSIONS/HLHI1U1O.3O4/TestFiles/jasmine/v2/jasmine.js:1510) at file:/// C :/USERS/MWHEELER/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/12.0/EXTENSIONS/HLHI1U1O.3O4/TestFiles/jasmine/v2/jasmine.js:1498 at file:/// C:/ USERS/MWHEELER/APPDATA/LOCAL /MICROSOFT/VISUALSTUDIO/12.0/EXTENSIONS/HLHI1U1O.3O4/TestFiles/jasmine/v2/jasmine.js:1485 at file:/// C:/ USERS/MWHEELER/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/12。 0 /扩展/ HLHI1U1O.3O4/TestFiles /茉莉/ V2/jasmine.js:518

问:

  • 为什么不为我们打勾工作?
  • 有没有更好的方法来做到这一点?
  • 如果我们使用jasmine.Clock.install(),我们也会得到一个未定义的错误,为什么会这样呢?

编辑 当我做jasmine.Clock()。安装(),我的两个测试失败,出现以下错误。

测试名称:clock scope.dt应包含值 测试全名:c:\ root \ nextgen \ projects \ staging \ solution \ applications \ webclient.angular.test \ homebase \ common \ clockcontrollerspec.js :: clock: :scope.dt应该包含值 测试源:c:\ root \ nextgen \ projects \ staging \ solution \ applications \ webclient.angular.test \ homebase \ common \ clockcontrollerspec。js:line 37 测试结果:失败 测试持续时间:0:00:00.009

结果消息:TypeError:试图分配给只读属性。 (file:/// c:/ root/nextgen/file /项目/ staging /解决方案/应用程序/ webclient /脚本/角度mocks.js:2107) 在文件://///根/下一步/项目/ staging /解决方案/应用程序/ webclient /脚本/角度模拟。 js:2090 at file:/// c:/root/nextgen/projects/staging/solution/applications/webclient.angular.test/homebase/common/clockcontrollerspec.js:30 at attemptSync(file:/// C :/USERS/MWHEELER/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/12.0/EXTENSIONS/HLHI1U1O.3O4/TestFiles/jasmine/v2/jasmine.js:1510) at file:/// C:/ USERS/MWHEELER/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/12.0/EXTENSIONS/HLHI1U1O.3O4/TestFiles/jasmine/v2/jasmine.js:1498

回答

0

jasmine.Clock是茉莉花1.3的风格。 您应该使用

jasmine.clock().install(); 
jasmine.clock().tick(101); 

jasmine 2.0 documentation

+0

当我这样做,我得到一个不同的错误。我将用这个信息编辑我的问题。 –

+1

请注意,时钟()是全部小写字母,您在您的问题中有时钟 –

+0

我已将时钟更改为时钟并添加了(),并且我没有收到任何错误。我的测试没有通过,但我怀疑滴答不更新我的控制器中的时间。 –

相关问题