Ich habe Schwierigkeiten zu verstehen, wie ich die Methoden für die Angular.js-Controller schreiben soll, damit die Komponententests durchgeführt werden können. Alle Tutorials im Internet sind einfach und zeigen nicht, wie es in den realen Anwendungen aussieht. Diese Tutorials zeigen, dass alle Methoden offen gelegt werden, indem sie an "scope" oder an "this (aka vm)" angehängt werden. Nach meinem Verständnis müssen Methoden, die nicht außerhalb des Controllers verwendet werden, nicht offen gelegt werden. Im folgenden Beispiel zeige ich nur zwei Methoden an, da sie durch Klicken auf die Schaltflächen auf der Seite ausgelöst werden. Der Rest der Methoden dient lediglich internen Zwecken. Wie kann ich die privaten Methoden im Controller testen, ohne sie zu exponieren? Muss ich alle ausstellen, um Unit-Tests durchführen zu können? Ist es eine gute Übung, alle Methoden aufzudecken? DankeKorrekte Art, Code für Angular zu schreiben, um Unit-Tests zu ermöglichen
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 = "";
}
}
Mein persönlicher Dank geht an einen Fremden, der seine wertvollen Punkte verschont hat, um die ganze Frage mit null Kommentaren zu verwerfen. Ihr wertvolles Feedback wurde sehr geschätzt. – estus