我有一个包含设置图标的div,这是一个html杂项符号
<span class="settings-icon">⚙</span>
我有一个茉莉花测试,检查div内容以确保它没有被更改。
it("the settings div should contain ⚙", function() {
var settingsIconDiv = $('.settings-icon');
expect(settingsIconDiv.text())
.toContain('⚙');
});
它不会传递,因为它被评估为齿轮图标的字形符号⚙
如何解码字形以通过测试?
答案 0 :(得分:3)
要从Unicode获取实际字符以将其与HTML中的文字进行比较,您可以使用String.fromCharCode(),例如
.toContain(String.fromCharCode(9881))
答案 1 :(得分:2)
您应该检查字符串'⚙'
,或者如果您不在代码中输入它,则应检查转义符号\u2699
。还有其他笨拙的方法来构造包含该字符的字符串,但简单性最好。
无论角色如何用HTML源代码编写(例如,作为参考⚙
),它都会在DOM中显示为角色本身U + 2699。在JavaScript中,类似⚙
的字符串只是七个Ascii字符的序列(尽管您可以将其传递给将其解析为HTML字符引用的函数,或者您可以将其分配给innerHTML
属性,导致HTML解析,但这是毫无意义和令人困惑的。)
答案 2 :(得分:1)
为了匹配浏览器行为(因为你不知道它是如何用html或文本编码的)我会尝试以下
.toContain($("<span>⚙</span>").text())
代替.toContain('⚙')
。
这样应该匹配它在dom中的存储方式。
String.fromCharCode(9881);
提到的Yuriy Galanter
肯定也可靠。但是因为dom引擎和js引擎是两个不同的部分,可能表现不同,我会用这两种技术进行测试。