0
我有以下簡單的工廠,我想寫一個單元測試。Jasmine和AngularJS - 當函數被用作依賴時如何測試工廠函數
(function() {
"use strict";
angular
.module("math")
.factory("addservice", [addTwoNumbers]);
function addTwoNumbers(a, b) {
return a + b;
}
return { add: addTwoNumbers };
})();
這是我迄今在我的測試規範。
describe('adding two numbers', function() {
var addService;
beforeEach(function() {
module('math');
inject(function ($injector) {
addService = $injector.get('addservice');
});
});
it('should add two numbers and get 2', function() {
var result = addService.add(1, 1);
expect(result).toBe(2);
});
});
當試圖運行這個單元測試我得到TypeError:addService.add不是一個函數。我會注意到,如果我將工廠聲明更改爲下面的代碼,我可以得到這個工作,但是我們遇到了一個問題,那就是縮小了參數名稱並將其更改爲a,b,c等。 (當傳遞$ q,$ http和許多其他依賴項時)並破壞代碼,所以我們轉向了上面所看到的。這顯然是一個非常基本的例子,這就是爲什麼我無法得到這個工作是如此令人沮喪。
(function() {
"use strict";
angular
.module("math")
.factory('addservice', [function() {
function addTwoNumbers(a, b) {
return a + b;
}
return { add: addTwoNumbers };
}
]);
})();
看來我需要引用addTwoNumbers函數,但不知道該怎麼去做。我可能錯過了一些非常明顯的東西,所以不勝感激。