我目前正在尝试使用Jasmine测试JS函数。由于函数检查body
标记中设置的CSS类,我想在夹具中使用<body>
标记:
setFixtures('<body class="themed someotherclass"></body>')
这个存根的HTML的jQuery引用 - $('body')
- 然后被移交给我正在测试的JS函数。但是这个body
标签显然从未真正进入Jasmine测试 - 看起来好像Jasmine创建了一个带有正文的文档,并且在其内部它将所有的灯具放入div
- 至少当我回声时截断体元素的outerHTML
我在一个体内看到了这个,并且在一个与Jasmine相关的内联JS之后:
<div id="jasmine-fixtures"></div>
当我尝试存根时,它是空的,但是当我使用div
时填充。
有没有办法在Jasmine测试中存根body标签?
答案 0 :(得分:4)
好的,我终于找到了解决方案。
每当你想用Jasmine存根body标签时,你首先必须调用“setFixtures()” - 在这个调用期间,Jasmine创建它自己的body标签。 因此,在创建了body标签之后,您可以对其进行操作,例如使用jQuery,然后运行你的测试,这取决于你对body标签所做的更改。
那就是:如果需要,我会运行我常用的“setFixtures(某些HTML)”命令,或者 - 如果我只需要身体标签进行测试,我在测试开始时简单地调用“setFixtures()”而没有任何参数。在那之后,至少在Jasmine版本1.x下,标签将可用,我可以使用例如jQuery调整/修改身体标签,就像我需要它: $( '身体')addClass( '为主题的')。 因此,我不是将body标签模拟为fixture,而是通过调用“setFixtures()”而不使用任何参数来“创建”body标签,然后根据需要操作DOM。