2016-04-27 40 views
0

我有一個控制器低於懲戒在控制器的服務具有依賴性customerService將返回基於listParam從服務器搜索result按性反應的類型

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