我很努力地理解如何編寫Angular.js控制器的方法來完成單元測試。互聯網上的所有教程都很簡單,並沒有顯示它在實際應用中的外觀。這些教程顯示所有的方法都通過附加到「範圍」或「this(aka vm)」來公開。根據我的理解,不會在控制器外部使用的方法不需要暴露。在下面的例子中,我只暴露了兩種方法,因爲它們是通過單擊頁面上的按鈕觸發的。其餘的方法僅用於內部目的。 如何測試控制器中的私有方法而不暴露它們?我是否需要公開所有這些才能進行單元測試?公開所有方法是否是一個好習慣?謝謝正確的方法來編寫Angular的代碼以允許單元測試
angular.module('app.pool',[])
.controller('PoolController', PoolController);
function PoolController(PoolService) {
var vm = this;
vm.candidateName='';
vm.candidatePicUrl='';
vm.approveCandidate = approveCandidate;
vm.refuseCandidate = refuseCandidate;
function approveCandidate() {
PoolService.approveCandidate();
getNextCandidate();
}
function refuseCandidate() {
PoolService.refuseCandidate();
getNextCandidate();
}
function getNextCandidate() {
clearProfile();
PoolService.getNextCandidate().
success(displayUserData);
}
function displayUserData(data) {
vm.candidateName = getCandidateName(data);
vm.candidatePicUrl = getCandidateProfilePic(data);
}
function getCandidateName(data) {
return data.userName;
}
function getCandidateProfilePic(data) {
return changeUrlToBiggerPic(data.profilePicture);
}
function changeUrlToBiggerPic(url) {
return url.replace('s150x150', 's600x600');
}
function clearProfile() {
vm.candidateName = "";
vm.candidatePicUrl = "";
}
}
我個人感謝一位陌生人,他保留了他的寶貴觀點,以零評論降低了整個問題的質量。您的寶貴意見非常感謝。 – estus