Javascript 本地比较失败的单元测试

Javascript 本地比较失败的单元测试,javascript,dojo,Javascript,Dojo,不知道为什么dojo会失败 doh.t(formatedValue.localeCompare("16,91 $CA") === 0, "incorrect french formatting") 格式化的值肯定是“16,91$CA”,所以我知道它是匹配的。Bu t当我尝试将===0添加到语法中时,我得到“二进制操作参数不可分配给布尔类型” 我不明白,这不是在做什么吗,当我做formatedValue时,计算为真/假。localeCompare(“56,96$CA”)==0?localeCom

不知道为什么dojo会失败

doh.t(formatedValue.localeCompare("16,91 $CA") === 0, "incorrect french formatting")
格式化的值肯定是“16,91$CA”,所以我知道它是匹配的。Bu t当我尝试将===0添加到语法中时,我得到“二进制操作参数不可分配给布尔类型”


我不明白,这不是在做什么吗,当我做formatedValue时,计算为真/假。localeCompare(“56,96$CA”)==0?

localeCompare
是为字符串比较而设计的,而不是平等测试。通过比较,我的意思是测试一个字符串是否大于或小于另一个字符串,这对排序很有用。由于您不想对字符串进行排序,因此测试相等性可能更简单:

doh.t(formatedValue === "16,91 $CA", "incorrect french formatting");
或者更好:

doh.is(formatedValue, "16,91 $CA", "incorrect french formatting");

如果您只想测试平等性,为什么要使用localeCompare?我不能复制这个,你能提供一个最小的测试用例吗?e、 例如,
doh.t(“foo-bar”.localeCompare(“foo-bar”)==0,“错!”)
对我来说很好……我不明白如果使用===or.localeComparewell为什么会有关系,意图是重要的主要原因。localeCompare用于比较(排序/字母排序)字符串,当它们相等时返回0(错误值),因此您必须使用
==
===
,不管怎样,一开始只使用
==
要简单得多,因为您实际上并不关心哪个字符串大于或小于。啊,所以我想我没有正确理解localCompare。谢谢Davecool,我仍然很想知道这个错误是从哪里来的,但很高兴你的工作正常了=)