如何从JS中的函数指定单元测试响应

时间:2015-07-15 15:25:12

标签: javascript unit-testing parse-platform

我在这里有一个功能我正在为外部服务器(parse.com)上的另一个函数编写测试。这是我第一次做这类事情。

如何编写测试以便第二个函数函数返回特定值?



$scope.signInClick = function() {
      console.log('Login was clicked');
      console.log('$scope.user.username: ' + $scope.user.username);
      console.log('$scope.user.password: ' + $scope.user.password);
       
        $scope.loading = $ionicLoading.show({
            content: 'Logging in',
            animation: 'fade-in',
            showBackdrop: true,
            maxWidth: 200,
            showDelay: 0
        });

        Parse.User.logIn(($scope.user.username) , $scope.user.password, {
            success: function(_user) {
                console.log('Login Success');
                console.log('user = ' + _user.attributes.username);
                console.log('email = ' + _user.attributes.email);
                $ionicLoading.hide();
                $rootScope.user = _user;
                $rootScope.isLoggedIn = true;
                $state.go('tab.home');
            },
            error: function(user, err) {
                $ionicLoading.hide();
                // The login failed. Check error to see why.
                if (err.code === 101) {2
                    $scope.error.message = 'Invalid login credentials';
                } else {
                    $scope.error.message = 'An unexpected error has ' +
                        'occurred, please try again.';
                }
                console.log('error message on Parse.User.logIn: ' + $scope.error.message);
                $scope.$apply();
            }
        });
      $state.go('tab.home');
  };




我必须要求Parse.User.logIn返回错误,成功或特定类型的错误,等等......

我该如何嘲笑?

编辑:

所以,仍然在努力解决这个问题,我找到了一种方法来做到这一点。它,它是为Parse.User.logIn创建一个间谍对象(这是唯一被调用的东西)。

但出于好奇,当我这样做时,为什么它不起作用,而是打电话给$scope.signInClick?有没有办法让这个函数在Parse对象上调用我的间谍?当我尝试调用$scope.signInClick时,我认为Parse未定义。

另一件事:这样做是否缺少测试点?当我们应该关注应用程序中实际存在的代码时,这只是在规定某些代码来执行某些操作吗?

1 个答案:

答案 0 :(得分:0)

没有迹象表明Parse进入你提供的代码片段,但基本上你应该做的是创建一个简化的模拟对象作为服务,为你提供你通常期望的结果来自真实的服务器。