Pha*_*Tan 8 javascript unit-testing angularjs karma-jasmine
我有xf数组:var xf = [];
我有一个函数是这个数组中的一个元素和一个使用它的函数:
$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;
};
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的规范时:
it ('checkEmail', function(){
$controller('MyCtrl', { $scope: $scope });
xf.validateUsername();
spyOn(window,xf.validateUsername).and.callThrough();
});
Run Code Online (Sandbox Code Playgroud)
它出错了:
xf.validateUsername不是函数
我该怎么说呢?
我不确定是否完全理解你的问题。但有一些我认为你做错了:
如果你想检查全局变量的实际功能,请转到该karma.conf.js文件并将js文件路径添加到files选项中:
files: [
...,
'fx-script.js',
...
],
callThrough应在调用实际函数之前使用:
it ('checkEmail', function(){
var ctrl = $controller('MyCtrl', { $scope: $scope });
spyOn(window, ctrl.xf.validateUsername).and.callThrough();
ctrl.xf.validateUsername();
});
我建议您单独测试您的controller、或全局脚本,并在需要注入依赖项或全局变量时添加模拟,这样您就可以随时service确定哪个module/失败了。script
| 归档时间: |
|
| 查看次数: |
3037 次 |
| 最近记录: |