正如评论中所述:
必须包装全局变量
PouchDB
在一个服务内,使其可注射。这是由于Angular通过简单的函数参数进行DI。所以,只需要做一些类似的事情:
angular.module('myModule')
.factory('PouchDBWrapper', function(){
return PouchDB;
}
然后您可以将其注入您的Track工厂:
factory('Track', [function(PouchDBWrapper) {
var db = new PouchDBWrapper('tracks');
var resource = {
getAll: function() {
return db.allDocs({include_docs: true});
}
return resource;
}]);
在您的测试中,您可以通过以下方式进行模拟:
module(function($provide) {
$provide.factory('PouchDBWrapper', {
allDocs: function() {
return 'MOCKED';
}
});