4

我目前正在尝试使用 Jasmine 测试 JS 函数。由于该函数检查body标签中设置的 CSS 类,因此我想<body>在夹具中使用该标签:

setFixtures('<body class="themed someotherclass"></body>')

jQuery 对这个存根 HTML 的引用$('body')——然后交给我正在测试的 JS 函数。但是这个body标签显然从来没有真正到达 Jasmine 测试中——它看起来好像 Jasmine 用一个 body 创建了自己的文档,并且在里面它把所有的固定装置放在一个里面div——至少当我回outerHTML显存根 body 元素的时候,我在里面看到了这个一个正文和一个与 Jasmine 相关的内联 JS 之后:

<div id="jasmine-fixtures"></div>

当我尝试对身体进行存根时,它是空的,但当我使用 a 时它是填充的div

有没有办法在 Jasmine 测试中存根 body 标签?

4

1 回答 1

4

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

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

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

于 2012-08-27T10:21:58.913 回答