单元测试 AngularJS 和 PouchDB 服务

编程入门 行业动态 更新时间:2024-10-27 22:34:06
本文介绍了单元测试 AngularJS 和 PouchDB 服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时送ChatGPT账号..

我正在尝试对我的各个 Angular 工厂进行单元测试,但在尝试正确模拟和注入 PouchDB 对象时遇到了困难.我的工厂代码目前如下:

I am attempting to unit test my individual Angular factories but am having a hard time trying to correctly mock and inject the PouchDB object. My factory code is currently as follows:

factory('Track', [function() {
    var db = new PouchDB('tracks');
    var resource = {
        getAll: function() {
          return db.allDocs({include_docs: true});
        }
    return resource;
}]);

我曾尝试使用 Angular 的 $provide 服务注入一个模拟 PouchDB 实例,但没有成功:

I had tried to use Angular's $provide service to inject a mock PouchDB instance with no luck:

 module(function($provide) {
    $provide.value('PouchDB', {
        allDocs: function() {
            return 'MOCKED';
        }
    });

我不完全确定从这里开始.任何帮助将不胜感激!

I am not entirely sure where to go from here. Any help would be greatly appreciated!

推荐答案

正如刚刚在评论中所述:您必须将全局变量 PouchDB 包装在服务中以使其可注入.这是因为 Angular 通过简单的函数参数进行 DI.因此,只需执行以下操作:

As just stated in the comments: you have to wrap the global variable PouchDB inside a service to make it injectable. This is due to Angular doing DI via simple function-parameters. So just do something like:

  angular.module('myModule')
     .factory('PouchDBWrapper', function(){
         return PouchDB;
     }

然后你可以将它注入你的Track factory:

Then you can inject it into your Track factory:

 factory('Track', [function(PouchDBWrapper) {
   var db = new PouchDBWrapper('tracks');
   var resource = {
      getAll: function() {
         return db.allDocs({include_docs: true});
      }
    return resource;
}]);

并且在您的测试中,您可以通过以下方式模拟它:

and in your test you can mock it by:

module(function($provide) {
   $provide.factory('PouchDBWrapper', {
       allDocs: function() {
           return 'MOCKED';
       }
});

这篇关于单元测试 AngularJS 和 PouchDB 服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-04-21 14:46:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1004782.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单元测试   AngularJS   PouchDB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!