スピナーを表示する角度ディレクティブのジャスミン テストをいくつか書いています。私のディレクティブは次のようになります。
定義([ "アプリ"、 "スピン" ]、 関数( アプリ、 スピナー ){ '厳密を使用'; アプリを返す .directive('処理', function() { 戻る { 制限:'E', トランスクルード: false, スコープ: { 表示: '=表示', メッセージ: '=メッセージ' }、 templateUrl: 'ディレクティブ/spin/processing.html', リンク:関数(スコープ、要素、属性){ var spinner = new Spinner({ lines: 17, // 描画する線の数 length: 40, // 各行の長さ width: 10, // 線の太さ radius: 60, // 内側の円の半径 corners: 1, // 角の丸み (0..1) rotate: 0, // 回転オフセット direction: 1, // 1: 時計回り、-1: 反時計回り color: '#000', // #rgb または #rrggbb または色の配列 speed: 1, // 1 秒あたりのラウンド数 Trail: 60, // 残光の割合 shadow: true, // 影をレンダリングするかどうか hwaccel: false, // ハードウェア アクセラレーションを使用するかどうか className: 'spinner', // スピナーに割り当てる CSS クラス zIndex: 2e9, // z-index (デフォルトは 2000000000) top: 'auto', // 親を基準とした上の位置 (px 単位) left: 'auto' // 親に対する左の位置 (px) })。スピン(); var loadingContainer = element[0].querySelectorAll('.processing-spinner-container')[0]; loadingContainer.appendChild(スピナー.el); } }; }); });
私のテンプレートは次のようになります。
<div><div ng-show="show" class="processing-spinner-container"></div></div>
今、ジャスミンの単体テストを行い、ng-show をテストしたいとき、私はこのようなものを持っています
it('ngShow が true の場合にあるはず', inject(function($rootScope, $compile) { $scope = $rootScope.$new(); $scope.show = true; var element = $compile('<処理>\</処理>')($scope); $scope.$apply(); var spinnerContainer = element[0].querySelector('.processing-spinner-container'); 期待する(スピナーコンテナ.クラスリスト.含む('ng-非表示')).toBe(false); }));
ただし、このテストは失敗します。ng-hide
$scope.show を true に設定しても、まだクラスがあります。