使用数组应用 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
转换为字符串,它们将不起作用,所以我删除了它。
注意我还没有测试过这些,所以你必须自己试一试。
我不确定如何执行以下操作(或者这是否是个好主意),但我有类似此功能的功能:
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
转换为字符串,它们将不起作用,所以我删除了它。
注意我还没有测试过这些,所以你必须自己试一试。