[英]AngularJS - Unit testing factories with complex internal logic
我正在為我的angularjs應用程序編寫單元測試,並且想要如何測試我的工廠。 不幸的是,因為我在編寫測試之前編寫了所有代碼,所以我的工廠中有一些非常復雜的邏輯。
例如,目前,我有一個httpRequest服務:
angular.module('myApp')
.service('httpRequest', ['$http',
function($http) {
function constructHttpRequest() {/*code*/}
function constructCertainTypeOfHttpRequest() {/*code*/}
function constructOtherTypeOfHttpRequest() {/*code*/}
return {
method1: function() {/*code*/}
method2: function() {/*code*/}
method3: function() {/*code*/}
}
}]);
該服務公開了許多不同的請求方法,這些方法使用相當復雜的construct...
函數(未公開)來生成請求。
理想情況下,我會測試所有construct...
函數,然后測試方法使用正確的參數調用這些函數; 我真的不想復制和粘貼construct...
邏輯的測試。
我的問題是 - 為了測試,有沒有任何簡潔的方法來公開這些函數,但是沒有將它們暴露給整個應用程序? 在理想的世界中,我應該如何編寫工廠代碼; 我應該將construct...
函數放入一個單獨的服務,只是做一個心理記錄不要直接訪問它們?
您是否嘗試在不同的服務中分離構造中的邏輯,然后依賴注入這些服務到您的httpRequest
服務? 這將允許您為注入的服務編寫一次測試,而不是為每個構造函數重寫它們。 另外,看看$ resourceProvider 。 $resourceProvider
通常涵蓋了基於RESTful API構建內容所需的一切。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.