2016-04-27 15 views
0

に応じてコントローラでサービスのモック:サーバーから<code>listParam</code>に基づいて検索<code>result</code>を返します<code>customerService</code>への依存関係を持っている以下のように私は、コントローラを持ってresponceタイプ

self.result = []; 
    self.listParam= {}; 

    self.search= function() { 
      self.result.length = 0; 
      self.findingPromise = customerService.find(self.listParam); 
      self.findingPromise 
       .then(function (response) { 
        self.result = response.data.Result; 
       }, function (response) { 
        var r = response; 
        ngNotify.set('Some problems occurred!', 
         { 
          type: 'error', 
          position: 'top', 
          sticky: true 
         }); 
       }); 
     }; 

私はためジャスミンを使用したいですユニットテスト。私はUnit Testing for AngularJSの記事を読んだ。しかし、私はどのように(この場合は検索)を嘲笑使用する必要があります理解していません。ご承知のとおり、私はサービスのバックエンドに基づいて回答を解決したか、解決していない可能性があります。

答えて

1

あなたは多分そのようなことがまた

spyOn(customerService, "find").and.callFake(function() { 
     return { 
     then:function(callback) { 
      var yourReturnObject = {}; 
      return callback(yourReturnObject); 
     } 
     }; 
    }); 

を働くだろう、あなたのサービスを模擬するためにスパイを使用することができ、あなたのサービス作品を作るか、失敗する約束を使用することができます。

deferred = $q.defer(); 

spyOn(customerService, 'find').andReturn(deferred.promise); 

// here your asserts 


// In case that you want to make your service fail 
deferred.reject({ ... }); 

// In case that you want to make your service work 
deferred.resolve({ ... }); 
+0

どうすればよいですか?私は両方のタイプの応答がどのように管理され、偽装されているのか理解できません。 – Elnaz

+0

何をテストしますか?サーバーからの適切な応答とサーバーからの応答の失敗? –

+0

いいえ、今サービスをテストしたくありません。私はコントローラの動作をテストしたい。応答がサービスから正常に得られた場合はhtmlページの結果を設定し、そうでない場合はエラー通知を送信します。しかし、私はその手順を知らない。 – Elnaz

関連する問題