我有很多 Jasmine 单元测试,它们正在为 Javascripts 代码运行单元测试。他们正在使用 Jasmine-jquery 插件来进行 DOM 操作。他们使用 loadFixture 来加载 HTML 的固定装置
我尝试使用 JsTestDriver 和 JasmineAdapter 自动化这些单元测试但是所有涉及 DOM-jquery 操作的测试都没有通过?这有什么问题吗?有没有办法将 Jasmine-jquery 与 JsTestDriver 一起使用?
我有很多 Jasmine 单元测试,它们正在为 Javascripts 代码运行单元测试。他们正在使用 Jasmine-jquery 插件来进行 DOM 操作。他们使用 loadFixture 来加载 HTML 的固定装置
我尝试使用 JsTestDriver 和 JasmineAdapter 自动化这些单元测试但是所有涉及 DOM-jquery 操作的测试都没有通过?这有什么问题吗?有没有办法将 Jasmine-jquery 与 JsTestDriver 一起使用?
我会回答自己,因为我找到了解决这个问题的方法。问题是 Jasmine-Jquery 正在使用 ajax 加载 html 夹具,并且它使用相对路径,假设 html 夹具位于相对于运行 Jasmine 测试的 HTML 容器的某个位置。但是因为 JsTestDriver 将测试加载到它自己的“空间”中,所以我们必须更改 Jasmine-Jquery 查找这些 html 固定装置的位置,并让 JsTestDriver 加载它们。
所以解决方案如下:
JsTestDriver 具有加载静态 html 文件的能力。在配置文件中添加以下内容:
服务:- 例如:服务:-fixtures*.html
现在您可以使用以下格式访问那些 http:localhost:9876/test/fixtures/... 您让 Jasmine-jquery 知道从该位置加载灯具。
瞧,您将再次进行测试。
只是为了澄清一下以前的帖子。
如果在您的jsTestDriver
配置文件中,您有:
服务:
spec/fixtures/*_fixture.html
然后,您需要覆盖您的测试套件
jasmine.getFixtures().fixturesPath = '/test/spec/fixtures';
这基本上是+您在配置文件/test/
的服务部分中声明的任何路径。jsTestDriver
我刚刚发布了一个开源工具包,希望它能帮助其他人,就像它帮助我一样。它是许多开源工具的组合,它为您提供了一个开箱即用的 requirejs 主干应用程序。
它使用 requirejs 文本插件和 requirejs 车把插件有一个更优雅的解决方案。
它提供单个命令来运行:dev web server、jasmine 单浏览器测试运行器、jasmine js-test-driver 多浏览器测试运行器,以及 JavaScript 和 CSS 的连接/缩小。它还输出应用程序的未缩小版本以进行生产调试,预编译您的车把模板,并支持国际化。无需设置。它只是工作。