0
因此,我有以下幾點:angularjs工廠包裝圍繞lodash未加載測試
angular.module('common.lodash', []).factory('_', function() {
_.additionFunctionOnLodashThatICreated = function(foo, bar, baz) { ... };
return _;
});
我在另一個模塊取決於lodash:
angular.module('common.gridhelper', ['common.lodash']).factory('gridhelper', function(_) {
var service;
service.foo = function (collection) {
// find is a native function on lodash
return _.find(...);
}
return service;
});
當我瀏覽到該網站在瀏覽器中,一切都只是「有效」。但是,當我嘗試寫幾個測試時,我得到了不同的結果。
下面的作品,所以我知道我的服務是可訪問:
describe('Lodash Service:', function() {
beforeEach(module('common.lodash'));
it('should get an instance of the lodash factory', inject(function(_) {
expect(_).toBeDefined();
}));
});
但是這個失敗:
describe('GridHelper Service:', function() {
var gh;
beforeEach(function() {
angular.module('test', [
'common.lodash',
'common.gridhelper'
]);
});
beforeEach(module('test'));
it('should return a good foo', inject(function(gridhelper) {
gridhelper.foo({'a': { 'b': 0 }});
});
返回錯誤:
TypeError: 'undefined' is not an object (evaluating '_.find(...)')
爲了好玩,我嘗試在gridhelper服務中打印出'_',並且在通過測試運行時顯示爲空,但是填充了wh通過瀏覽器運行。
任何人都對我失蹤的東西有想法嗎?