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

时间:2016-06-08 08:57:58

标签: javascript qunit

我正在使用其他开发人员编写的一些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

1 个答案:

答案 0 :(得分:1)

看到没有其他人提出解释我将简单地提交我的解决方案作为答案。

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

<asp:CheckBox ID="CheckBox_select" type="checkbox" runat="server" onclick="javascript:CheckCheckBox(this);" OnLoad="javascript:onLoad(this)"  />

function onLoad(elem) {
                        alert(elem.getElementById());
                    }

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