Ho gamma XF: var xf = [];
E ho una funzione è un elemento in questo array e una funzione di usarlo:Come creare unit test per la funzione di matrice in AngularJS con Jasmine
$scope.checkEmailValid = function() {
var result = false;
Iif (xf.validateEmail($scope.email, '256')) {
result = true;
}
return result;
};
xf.validateUsername = function (sText) {
var isValid = false;
do {
//Check for valid string.
isValid = typeof sText === 'string';
if (!isValid) {
break;
}
//Check that each special character does not exist in string.
for (var i = 0; i < sText.length; i++) {
if (xf.SPECIAL_CHARS.indexOf(sText.charAt(i)) !== -1) {
isValid = false;
break;
}
}
if (!isValid) {
break;
}
} while (false);
return isValid;
};
Ma quando eseguo il mio spec:
it ('checkEmail', function(){
$controller('MyCtrl', { $scope: $scope });
xf.validateUsername();
spyOn(window,xf.validateUsername).and.callThrough();
});
Si fa un errore:
xf.validateUsername is not a function
Come posso cove è vero?
è 'xf' una proprietà su' $ scope', una proprietà sul controller o solo una variabile in formato libero nel corpo della funzione controller? – Claies
@Claies: xf è solo una variabile in formato libero nel corpo del controller. –
non è possibile testarlo in questo modo. Se non è effettivamente associato a '$ scope' o esposto come proprietà pubblica, è accessibile solo nella funzione definita, a causa del modo in cui operano le chiusure JavaScript. – Claies