以下のコードの 2 つのスニペットを検討してください。
angular では、コントローラーは DOM 操作ロジックから厳密に分離されているため、次の例に見られるように、テストが容易になります。
function PasswordCtrl($scope) {
$scope.password = '';
$scope.grade = function() {
var size = $scope.password.length;
if (size > 8) {
$scope.strength = 'strong';
} else if (size > 3) {
$scope.strength = 'medium';
} else {
$scope.strength = 'weak';
}
};
}
そしてテストは簡単です
var pc = new PasswordCtrl();
pc.password('abc');
pc.grade();
expect(pc.strength).toEqual('weak');
2 番目のコード スニペットがどのように機能しているか知りたいです。モック $scope は渡されませんが、明らかに動作します。また、メソッド呼び出しpc.password('abc');
およびはおよびのエイリアスpc.grade()
のようですが、これらのエイリアスはどこから来たのですか? これはAngularに組み込まれているものですか?ruby の method_missing に相当するもの?もしそうなら、それはフードの下でどのように機能しますか?$scope.password('abc')
$scope.grade()