使用mocha && chai将数组对象与字符串进行比较。

时间:2018-07-17 19:33:18

标签: javascript testing mocha chai

我第一次使用mocha和chai,不知道发生了什么?我试图说我的随机播放方法已经移动了数组对象,并且第一个数组对象不再-“ sam1” IE-

describe('Shuffle', function(){

it('Shuffle should randomly move array items by their index', function(){
    let group = ["sam1","sam2","sam3","sam4","sam5","sam6","sam7","sam8","sam9"];
    let result = shuffle(group);
    assert.equal(result, group[0] != "sam1");
  });
});

这是错误-

AssertionError: expected [ Array(9) ] to equal true

我该如何比较两者才能实现?还是有更好的方法显示数组已被改组?

5 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

assert.equal()的第一个参数是您应该进行比较的位置,

assert.equal(comparison, 'message to display on failure');

应该是

for(int i = 0; i < group.length; i++) {
    if (group[i] !== result[i]) {
        return false;
    }
}

了解数组是否已改组的更好方法是将结果中的每个元素与原始数组进行比较,因此类似

if (string.IsNullOrEmpty(pin.Text) || pin.Text == "0")
            {
                //Alert user string is either null, empty or 0
                ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('Please enter your pin');", true);
            }

尽管如此,根据您洗牌的方式,有可能以相同的顺序洗牌。

有关断言的更多详细信息,请参见http://www.chaijs.com/api/assert/

答案 2 :(得分:0)

似乎shuffle返回一个数组。因此,要检查result数组中的第一个元素是否与group数组中的第一个元素不同,您必须比较数组的前两个元素。如果要使用assert方法,则必须采用以下方式:

assert(result[0] != group[0], "string if the test fails");

仅在此doc

的顶部

答案 3 :(得分:0)

最简单的方法是比较之前的数组和之后的数组。在此不要使用ProgressIndicator来比较数组或对象,而要使用equal

deepEqual

参考:http://www.chaijs.com/api/assert/#method_deepequal

答案 4 :(得分:0)

expect(result).to.have.members(group); // to check if all members there - doesn't care about the order
expect(result).to.not.eql(group); // to check if order has changed - there's a catch though; only 1 change on order (e.g. `shuffle` swapped **just** 2 members) is sufficient to this assertion to pass

来源;