단위 테스트를 수행 할 수 있도록 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 = "";
}
}
내 개인적인 감사는 0 개의 의견으로 전체 질문을 downvote하기 위해 자신의 소중한 포인트를 아끼지 않은 낯선 사람에게 간다. 귀중한 의견은 높이 평가되었습니다. – estus