testing - 如何在 Jasmine 中将 <body> 标签设置为 fixture

标签 testing jasmine fixtures stubbing jasmine-jquery

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

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

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

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

当我尝试 stub 主体时它是空的,但当我使用 div 时它被填充了反而。

有没有办法在 Jasmine 测试中添加 body 标签?

最佳答案

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

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

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

关于testing - 如何在 Jasmine 中将 <body> 标签设置为 fixture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12139315/

相关文章:

javascript - Angular/karma 类型错误 : Cannot Read Property 'offsetTop' of Undefined

testing - 按顺序运行 Jasmine 测试

Angularjs 和 qunit 测试

testing - 软件发布前的测试流程是什么?

c# - 可以使用 NSubstitute 模拟 MVC Controller 方法吗

jquery - 使用 jquery-mockjax.js stub 进行 Jasmine 测试

java - 如何自动从 IntelliJ 添加测试方法的注释部分?

ruby-on-rails - rake 数据库 :fixtures:load on factory_girl

scala - 比赛中的赛程! 2 斯卡拉

python - pytest fixture - 获取值并避免错误 "Fixture ' X' 直接调用”