单元测试mongo map使用本地范围和对象范围变量来减少函数

时间:2014-11-17 12:07:29

标签: javascript mongodb unit-testing

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

简单的地图功能

function mapFunction() {
   if(key !== this.key) {
      return;
   }
   // do reduce logic
}
  • this.key变量是MongoDB的对象属性(this提供对此类对象的所有属性的访问权限。)
  • key是范围变量(范围对象分别提供给map reduce查询)。

mapFunction' if语句的目的是简单地忽略MongoDB对象,因为它们的键与作用域中提供的键不匹配。

单元测试图功能

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

使用this.key函数

可以轻松完成模拟Function.prototype.apply
var mongoContext = {
   key: "sampleKey"
};
mapFunction.apply(mongoContext);

问题

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

1 个答案:

答案 0 :(得分:0)

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

key变量将回退到window,除非它在链的下方被遮蔽。应该适合你的问题。

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