【问题标题】:Unit testing mongo map reduce functions with both local scope and object scope variables具有本地范围和对象范围变量的单元测试 mongo map reduce 函数
【发布时间】:2014-11-17 20:52:49
【问题描述】:

我想对用于使用 map reduce 算法查询 MongoDB 的 JavaScript 函数进行单元测试。

简单的地图功能

function mapFunction() {
   if(key !== this.key) {
      return;
   }
   // do reduce logic
}
  • this.key 变量是 MongoDB 的对象属性(this 提供对此类对象所有属性的访问)。
  • key 是一个作用域变量(作用域对象单独提供给 map reduce 查询)。

mapFunctionif 语句的目的很简单,就是在 MongoDB 对象的键与范围内提供的键不匹配时忽略它们。

单元测试地图功能

要模拟 MongoDB 上下文,keythis.key 变量都需要由测试框架设置。

使用Function.prototype.apply函数可以很容易地模拟this.key

var mongoContext = {
   key: "sampleKey"
};
mapFunction.apply(mongoContext);

问题

我想知道在这种情况下如何模拟 key 值。

【问题讨论】:

    标签: javascript mongodb unit-testing


    【解决方案1】:

    您可以将mapFunction 包装在调用函数中,并根据需要在那里设置范围。

    key 变量将回退到 window,除非它被隐藏在链的更深处。应该适合您的问题。

    例如,请参阅http://jsbin.com/sipili/1/edit?js,output

    【讨论】:

      猜你喜欢
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多