将Chai可链式吸气剂应用于阵列

时间:2015-03-20 15:18:15

标签: javascript chai

我不确定如何执行以下操作(或者如果它甚至是一个聪明的主意),但我有类似这样的功能:



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

我认为答案是讨好的(我很高兴出错),如果是这样的话,这是一个我总是遇到麻烦的概念。有什么想法吗?

1 个答案:

答案 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转换为字符串,我认为它们无法正常工作,所以我删除了它。

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