gpt4 book ai didi

javascript - 比较两个数组时,单元测试equals()失败

转载 作者:行者123 更新时间:2023-12-03 13:38:11 25 4
gpt4 key购买 nike

以下代码中的最后一个单元测试失败,可能是因为==使用的equals()运算符未正确比较数组。但是,我不知道为什么会这样。

将从equals()检索到的数组与新实例化的数组进行比较时,为什么SC.Record失败?

monster_model.js

BagOfTricks.Monster = SC.Record.extend(
{
name: SC.Record.attr(String, { defaultValue: 'Unspecified' }),
level: SC.Record.attr(Number, { defaultValue: 0 }),
keywords: SC.Record.attr(Array, { defaultValue: function() { return [ 'Unspecified' ] } })
}
);

monster_test.js
var defaultMonster;

module("BagOfTricks.Monster", {
setup: function() {
defaultMonster = BagOfTricks.store.createRecord( BagOfTricks.Monster, {} );
},
teardown: function() {
BagOfTricks.store.reset();
}
}
);

test("Default monster created as expected?", function() {
equals(defaultMonster.get('name'), 'Unspecified');
equals(defaultMonster.get('level'), 0);

// The following test fails.
var defaultKeywordArray = ['Unspecified'];
equals(defaultKeywordArray, defaultMonster.get('keywords'));
}
);

最佳答案

当比较数组时,JavaScript表现得很奇怪。我不能告诉你为什么选择,但是我可以告诉你如何避免它

使用Breaking Par: JavaScript Are Arrays Equal中的第二个函数。

它是类型安全的,并且在大型阵列上非常快。

关于javascript - 比较两个数组时,单元测试equals()失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com