如何在Jasmine中将标记设置为fixture

时间:2012-08-27 09:24:54

标签: testing jasmine fixtures stubbing jasmine-jquery

我目前正在尝试使用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标签?

1 个答案:

答案 0 :(得分:4)

好的,我终于找到了解决方案。

每当你想用Jasmine存根body标签时,你首先必须调用“setFixtures()” - 在这个调用期间,Jasmine创建它自己的body标签。 因此,在创建了body标签之后,您可以对其进行操作,例如使用jQuery,然后运行你的测试,这取决于你对body标签所做的更改。

那就是:如果需要,我会运行我常用的“setFixtures(某些HTML)”命令,或者 - 如果我只需要身体标签进行测试,我在测试开始时简单地调用“setFixtures()”而没有任何参数。在那之后,至少在Jasmine版本1.x下,标签将可用,我可以使用例如jQuery调整/修改身体标签,就像我需要它: $( '身体')addClass( '为主题的')。 因此,我不是将body标签模拟为fixture,而是通过调用“setFixtures()”而不使用任何参数来“创建”body标签,然后根据需要操作DOM。