簡體   English   中英

AngularJS - 具有復雜內部邏輯的單元測試工廠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM