gpt4 book ai didi

javascript - 为什么 qUnit 的 assert.equal 认为这两个字符串在 IE 中是不同的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:28:16 25 4
gpt4 key购买 nike

我正在处理由另一位开发人员编写的一些 qUnit 测试,但我无法理解为什么 IE 中的特定测试失败。

有一个函数可以将许多不同格式的字符串日期转换为 UTC 日期,而且它似乎可以正常运行。但是,我在 IE 中对其进行测试时遇到了一些问题。

为了测试它,我正在获取函数的返回值(这是一个数字而不是标准格式的日期),从中创建一个新日期,然后使用 JavaScript 的 toLocaleString() 函数获取一个我可以比较的字符串到我创建的另一个字符串。测试示例如下;减去对函数的调用,我用从函数中获得的输出替换了对函数的调用。

var expectedResult = "11/11/2000 12:56:00";
var actualResult = new Date(973947360000).toLocaleString():
assert.equal(expectedResult, actualResult);

这失败了,但我不明白为什么,我没有使用 deepEqual() 并且类型无论如何都是相同的(我已经调试和检查过)。我认为这可能取决于 IE 的编码,但我不确定 1,如何确定是这种情况,以及 2,绕过它/有效地测试它。值得注意的是,此测试在 FF 和 Chrome 中通过得很好,尽管 Chrome 将“PM”附加到日期的末尾。

如有任何帮助,我们将不胜感激。

下面是 IE 输出的快照。

qUnit output difference

最佳答案

鉴于没有其他人提出解释,我将简单地提交我的解决方法作为答案。

看起来 Internet Explorer 中的 .toLocaleString() 对两个日期之间的空格进行编码的方式与 JavaScript 初始化的字符串的编码方式不同。使用以下代码替换 .toLocaleString() 空间并允许对 2 个值的相等性进行有效评估。

.replace(/[^ -~]/g, '');

因为我只需要知道显示的日期与输入的日期具有相同的值,这是可以接受的。

关于javascript - 为什么 qUnit 的 assert.equal 认为这两个字符串在 IE 中是不同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697802/

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