使用数组应用 Chai 可链接的 getter

Apply Chai chainable getters with an array

我不确定如何执行以下操作(或者这是否是个好主意),但我有类似此功能的功能:

testProperty: function(err, data, prop, chaiMethod) {

  if (Array.isArray(data)) data = data[0];

    var propertyValue = (isNaN(parseInt(data.value, 10))) ? data.value : parseInt(data.value, 10);

 return propertyValue.toString().should[chaiMethod](prop);

  }

};

其中 chaiMethod 是一个字符串数组,表示我要应用的 chai 字符串。例如:

chiMethod = ['be', 'above']

我想弄清楚如何将这些函数应用到 should,然后再传入 prop 我正在尝试验证。

我认为答案是柯里化(我很乐意犯错),如果是这样的话,这就是我一直难以理解的概念。有什么想法吗?

您应该能够循环遍历字符串以获取每个连续 属性 的值,最后一个有望成为要调用的函数:

testProperty: function(err, data, prop, chaiMethod) {

  if (Array.isArray(data)) data = data[0];

    var propertyValue = (isNaN(parseInt(data.value, 10))) ? data.value : parseInt(data.value, 10);

    var assertion = (propertyValue).should,
        fn = assertion;

    for (var i = 0, len = chaiMethod.length - 1; i < len; i++) {
        fn = fn[chaiMethod[i]];
    }
    return fn[chaiMethod[chaiMethod.length-1]](prop);    
  }

};

此外,如果您想进行 be.above 之类的测试,我认为如果您将 propertyValue 转换为字符串,它们将不起作用,所以我删除了它。

注意我还没有测试过这些,所以你必须自己试一试。