所以我有以下内容:
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服务中打印出'_',并且在通过测试运行时显示为null,但是在通过浏览器运行时填充。
任何人都对我错过的作品有所了解?
答案 0 :(得分:0)
事实证明我的测试在我的实现中暴露了一个问题。 _.find返回null,我试图从该返回值中提取一些东西而不先检查。