我不确定如何执行以下操作(或者如果它甚至是一个聪明的主意),但我有类似这样的功能:
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
。
我认为答案是讨好的(我很高兴出错),如果是这样的话,这是一个我总是遇到麻烦的概念。有什么想法吗?
答案 0 :(得分:1)
你应该能够循环遍历字符串以获取每个连续属性的值,最后一个属性可能是要调用的函数:
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
转换为字符串,我认为它们无法正常工作,所以我删除了它。
注意我还没有测试过这些,所以你必须自己试试。