用一个数组应用Chai可链接的getters

Apply Chai chainable getters with an array

本文关键字:Chai 链接 getters 应用 数组 一个      更新时间:2023-09-26

我不知道如何做以下事情(或者这是否是一个明智的想法),但我有这样的功能:

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']

在传入要验证的prop之前,我正试图弄清楚如何将这些函数应用于should

我认为答案是骗人的(我很高兴自己错了),如果是这样的话,这是我一直很难理解的概念。有什么想法吗?

您应该能够在字符串上循环以获得每个连续属性的值,最后一个有望是要调用的函数:

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转换为字符串,它们就不起作用,所以我删除了它。

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