为什么 qUnit 的 assert.equal 认为这两个字符串在 IE 中不同?
Why does qUnit's assert.equal think these 2 strings are different in IE?
我正在处理其他开发人员编写的一些 qUnit 测试,但我无法理解为什么 IE 中的特定测试失败。
有一个函数可以将许多不同格式的字符串日期转换为 UTC 日期,而且它似乎可以正常运行。但是,我在 IE 中测试它时遇到了一些问题。
为了测试它,我使用函数的 return(这是一个数字而不是标准格式的日期),从中创建一个新日期,然后使用 JavaScript' s toLocaleString() 函数获取一个字符串,我可以将它与我创建的另一个字符串进行比较。测试示例如下;减去对函数的调用,我用从函数中获得的输出替换了对函数的调用。
var expectedResult = "11/11/2000 12:56:00";
var actualResult = new Date(973947360000).toLocaleString():
assert.equal(expectedResult, actualResult);
这失败了,但我不明白为什么,我没有使用 deepEqual() 并且类型是相同的(我已经调试和检查)。我认为这可能取决于 IE 的编码,但我不确定 1,如何确定是这种情况,以及 2,绕过 it/effectively 测试它。值得注意的是,此测试在 FF 和 Chrome 中通过得很好,尽管 Chrome 将 "PM" 附加到日期的末尾。
如有任何帮助,我们将不胜感激。
下面是 IE 输出的快照。
鉴于没有其他人提出解释,我将简单地提交我的解决方法作为答案。
Internet Explorer 中的 .toLocaleString() 似乎对两个日期之间的 space 进行编码,这与 JavaScript 初始化的字符串的编码方式不同。使用以下代码替换 .toLocaleString() space 并允许对 2 个值的相等性进行有效评估。
.replace(/[^ -~]/g, '');
因为我只需要知道显示的日期与输入的日期具有相同的值,这是可以接受的。
我正在处理其他开发人员编写的一些 qUnit 测试,但我无法理解为什么 IE 中的特定测试失败。
有一个函数可以将许多不同格式的字符串日期转换为 UTC 日期,而且它似乎可以正常运行。但是,我在 IE 中测试它时遇到了一些问题。
为了测试它,我使用函数的 return(这是一个数字而不是标准格式的日期),从中创建一个新日期,然后使用 JavaScript' s toLocaleString() 函数获取一个字符串,我可以将它与我创建的另一个字符串进行比较。测试示例如下;减去对函数的调用,我用从函数中获得的输出替换了对函数的调用。
var expectedResult = "11/11/2000 12:56:00";
var actualResult = new Date(973947360000).toLocaleString():
assert.equal(expectedResult, actualResult);
这失败了,但我不明白为什么,我没有使用 deepEqual() 并且类型是相同的(我已经调试和检查)。我认为这可能取决于 IE 的编码,但我不确定 1,如何确定是这种情况,以及 2,绕过 it/effectively 测试它。值得注意的是,此测试在 FF 和 Chrome 中通过得很好,尽管 Chrome 将 "PM" 附加到日期的末尾。
如有任何帮助,我们将不胜感激。
下面是 IE 输出的快照。
鉴于没有其他人提出解释,我将简单地提交我的解决方法作为答案。
Internet Explorer 中的 .toLocaleString() 似乎对两个日期之间的 space 进行编码,这与 JavaScript 初始化的字符串的编码方式不同。使用以下代码替换 .toLocaleString() space 并允许对 2 个值的相等性进行有效评估。
.replace(/[^ -~]/g, '');
因为我只需要知道显示的日期与输入的日期具有相同的值,这是可以接受的。