2016-03-07 68 views
0

我有點困惑,爲什麼我得到undefined作爲我正在測試的函數的返回值。karma中的console.log angularjs方法測試

這裏是我測試的功能:基於陣列dummyEntityArray我陣列

it("should arrange an array into ovject with extra value for entities + depots", inject(function (shareDataService) { 
     var dummyEntityArray = ["ent1", "ent2", "ent3"]; 
     var expectedObjectArray = [{ val: "ent1", checked: false }, { val: 'ent2', checked: false }, { val: 'ent3', checked: false }]; 

     expect(mainScope.entityItemsIntoObjectChecked).toBeDefined(); 
     mainScope.entityItemsIntoObjectChecked(dummyEntityArray); 
     console.log(mainScope.entityItemsIntoObjectChecked(dummyEntityArray)) 
})) 

我期待線路console.log(mainScope.entityItemsIntoObjectChecked(dummyEntityArray))輸出:

$scope.entityItemsIntoObjectChecked = function (entityItems) { 
    newEntityWithChecked = entityItems.map(function (value) { 
     return { "val": value, "checked": false }; 
    }); 
    shareDataService.setEntityArray(newEntityWithChecked); 
} 

和部分我的測試套件我已經通過在線mainScope.entityItemsIntoObjectChecked(dummyEntityArray);

但我在console.log上得到undefined。爲什麼是這樣?

回答

1

您的$scope.entityItemsIntoObjectChecked方法不會返回任何內容,因此返回值將爲undefined

您可以從方法返回newEntityWithChecked數組或通過shareDataService.setEntityArray方法返回間諜來驗證是否傳遞了期望的數組。

你可以閱讀間諜這裏的文檔:http://jasmine.github.io/2.0/introduction.html#section-Spies

+0

賓果遊戲,歡呼的人。新測試:D – xeon48

+0

是否可以在茉莉花中調用一個函數併爲它分配一個變量?例如,我想'mainScope.entityItemsIntoObjectChecked(dummyEntityArray);'被分配給一個var,然後傳遞到我的下一個測試步驟,即expect(mainScope.methodWhichChangesArrayToObject(mainScope.entityItemsIntoObjectChecked(dummyEntityArray))。toEqual(<<對象在數組中>>)' – xeon48

+0

下一步你的意思是另一個規範嗎?通常不建議讓一個規範依賴於另一個規範。你可以在你想要測試的規範中調用必要的方法'methodWhichChangesArrayToObject' – Saravana

相關問題