ユニットテストができるようにするために、Angular.jsコントローラのメソッドをどのように書くべきかを理解するのは難しいです。インターネット上のすべてのチュートリアルはシンプルであり、実際のアプリケーションでどのように見えるかを示していません。これらのチュートリアルでは、すべてのメソッドが「スコープ」または「this(aka VM)」にアタッチされて公開されていることが示されています。私の理解では、コントローラの外部で使用されないメソッドは公開する必要はありません。下の例では、ページ上のボタンをクリックすることでトリガされるため、2つのメソッドしか公開していません。残りの方法は、単に内部目的のために役立ちます。 コントローラのプライベートメソッドを公開せずにテストするにはどうすればよいですか?ユニットテストができるようにすべてを公開する必要がありますか?すべてのメソッドを公開するのは良い方法ですか?ユニットテストを可能にするために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