我在这里有一个功能我正在为外部服务器(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未定义。
另一件事:这样做是否缺少测试点?当我们应该关注应用程序中实际存在的代码时,这只是在规定某些代码来执行某些操作吗?
答案 0 :(得分:0)
没有迹象表明Parse进入你提供的代码片段,但基本上你应该做的是创建一个简化的模拟对象作为服务,为你提供你通常期望的结果来自真实的服务器。