【问题标题】:Unit testing watchers in angular js controllerAngular js控制器中的单元测试观察者
【发布时间】:2013-09-21 06:39:02
【问题描述】:

如何使用 jasmine 对这个 sn-p 代码进行单元测试?

    $scope.profileObject = ProfilesSharedObject;

$scope.$watch("profileObject.startDate", function() {
    var startDate = $scope.profileObject.startDate._d;
    var endDate = $scope.profileObject.endDate._d;

    var newStartDate = moment(startDate).format("YYYY-MM-DD");
    var newEndDate = moment(endDate).format("YYYY-MM-DD");

    $scope.startDate = moment(startDate).format("MM/DD");
    $scope.endDate = moment(endDate).format("MM/DD/YYYY");

    $scope.getSleepData(newStartDate, newEndDate);
});

其中 ProfileSharedObject 是一个 Angular js 服务

【问题讨论】:

    标签: javascript unit-testing angularjs jasmine javascript-framework


    【解决方案1】:

    在每个摘要周期对观察侦听器进行评估。通常这是自动发生的,但是在单元测试时你需要手动触发它:

    it('should update the start date', function() {
        // Arrange
        ProfileSharedObjectMock.startDate = new Date(2013, 0, 1);
    
        // Act
        $scope.$digest();
    
        // Assert
        expect($scope.startDate).toEqual(new Date(2013, 0, 1));
      });
    

    我创建了一个Plunker script,这样您就可以看到整个测试套件正在运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2018-01-08
      • 2016-07-29
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多