5

我有很多 Jasmine 单元测试,它们正在为 Javascripts 代码运行单元测试。他们正在使用 Jasmine-jquery 插件来进行 DOM 操作。他们使用 loadFixture 来加载 HTML 的固定装置

我尝试使用 JsTestDriver 和 JasmineAdapter 自动化这些单元测试但是所有涉及 DOM-jquery 操作的测试都没有通过?这有什么问题吗?有没有办法将 Jasmine-jquery 与 JsTestDriver 一起使用?

4

3 回答 3

9

我会回答自己,因为我找到了解决这个问题的方法。问题是 Jasmine-Jquery 正在使用 ajax 加载 html 夹具,并且它使用相对路径,假设 html 夹具位于相对于运行 Jasmine 测试的 HTML 容器的某个位置。但是因为 JsTestDriver 将测试加载到它自己的“空间”中,所以我们必须更改 Jasmine-Jquery 查找这些 html 固定装置的位置,并让 JsTestDriver 加载它们。

所以解决方案如下:

JsTestDriver 具有加载静态 html 文件的能力。在配置文件中添加以下内容:

服务:- 例如:服务:-fixtures*.html

现在您可以使用以下格式访问那些 http:localhost:9876/test/fixtures/... 您让 Jasmine-jquery 知道从该位置加载灯具。

瞧,您将再次进行测试。

于 2011-09-20T15:34:50.870 回答
3

只是为了澄清一下以前的帖子

如果在您的jsTestDriver配置文件中,您有:

服务:

spec/fixtures/*_fixture.html

然后,您需要覆盖您的测试套件

jasmine.getFixtures().fixturesPath = '/test/spec/fixtures';

这基本上是+您在配置文件/test/的服务部分中声明的任何路径。jsTestDriver

于 2011-11-01T21:51:54.390 回答
0

我刚刚发布了一个开源工具包,希望它能帮助其他人,就像它帮助我一样。它是许多开源工具的组合,它为您提供了一个开箱即用的 requirejs 主干应用程序。

它使用 requirejs 文本插件和 requirejs 车把插件有一个更优雅的解决方案。

它提供单个命令来运行:dev web server、jasmine 单浏览器测试运行器、jasmine js-test-driver 多浏览器测试运行器,以及 JavaScript 和 CSS 的连接/缩小。它还输出应用程序的未缩小版本以进行生产调试,预编译您的车把模板,并支持国际化。无需设置。它只是工作。

http://github.com/davidjnelson/agilejs

于 2013-02-16T19:28:33.803 回答