我正在使用其他人寫的angularjs應用程序。我一直在這個應用程序的一邊,另一邊,增加了功能。我有可測試的angularjs應用程序嗎?
我是angularjs的新手,也是新的單元測試。我已經爲此應用程序編寫了50多個單元測試,據我所知,這樣做的主要好處是發現代碼中的不一致並修復它們,然後編寫單元測試。
我的角應用大體上是由像這樣的單個控制器的內部功能:
$scope.getDataDoSomethingWithIt = function()
{
var url = $scope.endpoint + "my_hard_coded_url";
methodInAnotherFileThatMakesTheXHRRequest($http, url, "PATCH", mainData.adminToken, mainData.userToken, null, function(response) {
if (response.status == 200){
$scope.callSomeOtherMethod();
$scope.addMessage = "Successfully did something.";
$scope.isMessage = true;
}else{
$scope.addError = "Whoops! There was an error";
$scope.isError = true;
}
});
};
我在一個完全喪失對如何有意義寫一個單元測試針對像這樣的方法。主要因爲$scope.endpoint
設置爲$watch
,當mainData.userToken
更改時。
這是一個什麼樣的我的單元測試一個看起來像現在一個很好的例子:
describe('getDataDoSomethingWithIt', function() {
it('addMessage should not equal null and addError should be empty string.', function() {
var controller = $controller('myController', { $scope: $scope });
$scope.getDataDoSomethingWithIt();
expect($scope.addMessage).not.toBe(null);
expect($scope.addError).toBe('');
});
});
這是否目的是什麼?什麼使得可測試的angularjs應用程序成爲可能?如果這是一個糟糕的單元測試,那麼更好的一個會是什麼?