c.s*_*ets 5 unit-testing mocking htmlunit angularjs jasmine-maven-plugin
我是maven和jasmine的新手,我在设置maven以在角度应用程序上运行单元测试时遇到问题.一旦我将angular-mocks.js添加到test/javascript/lib文件夹中,我就陷入了麻烦.
mvn testhtmlunit.ScriptException通过添加angular-mocks文件抛出一个just.如果我删除文件,它运行得很好(当然没有部件依赖于模拟,但它们作为单元测试失败而不是抛出错误).
有谁知道什么可能导致此错误以及如何解决它?
编辑
我强烈怀疑这是一个htmlunit问题,因为更改时错误不同<browserVersion>:
CHROME给出:
TypeError:在对象[object HTMLDocument]中找不到函数attachEvent.(
http://localhost:55408/src/lib/angular.js#1568)
FIREFOX_3_6给出:
使用参数[String,NativeArray,Boolean]调用Node.removeEventListener()的异常
INTERNET_EXPLORER_9给出:
使用参数[String,NativeArray]调用Node.detachEvent()的异常
堆栈跟踪(摘录FF):
[ERROR] Failed to execute goal com.github.searls:jasmine-maven-plugin:1.3.1.2:test (default) on project my-jasmine-project: The jasmine-maven-plugin encountered an exception:
[ERROR] java.lang.RuntimeException: org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: Exception invoking Node.removeEventListener() with arguments [String, NativeArray, Boolean]
[ERROR] Build info: version: '2.32.0', revision: '6c40c187d01409a5dc3b7f8251859150c8af0bcb', time: '2013-04-09 10:39:28'
[ERROR] System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.4', java.version: '1.6.0_51'
[ERROR] Driver info: driver.version: HtmlUnitDriver
[ERROR] at com.github.searls.jasmine.runner.SpecRunnerExecutor.execute(SpecRunnerExecutor.java:39)
...
Run Code Online (Sandbox Code Playgroud)
pom.xml(摘录):
<plugin>
<groupId>com.github.searls</groupId>
<artifactId>jasmine-maven-plugin</artifactId>
<version>1.3.1.2</version>
<configuration>
<preloadSources>
<source>lib/angular.js</source>
<!-- <source>lib/angular-mocks.js</source> -->
<source>http://code.angularjs.org/1.1.5/angular-mocks.js</source>
</preloadSources>
</configuration>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
将angular-mocks.js添加到test/javascript/lib文件夹并直接从angularjs网站引用它都会产生相同的错误.
小智 8
在CHROME浏览器版本中,当angular尝试加载JQLite的jQuery库的api兼容子集时,会发生错误,该子集允许angular操作DOM.我能够通过下载未压缩版本的jQuery(v1.10.2),angular(v1.0.7)和angular-mocks(v1.0.7)来解决这个问题.我在jasmine-maven-plugin中的配置中添加了以下内容.
<preloadSources>
<preloadSource>${angular-test-deps}/jQuery.js</preloadSource>
<preloadSource>${angular-test-deps}/angular.js</preloadSource>
<preloadSource>${angular-test-deps}/angular-mocks.js</preloadSource>
</preloadSources>
Run Code Online (Sandbox Code Playgroud)
角度文档指出"Real jQuery总是优先于jqLite,只要它在DOMContentLoaded事件触发之前加载"(未压缩的1.0.7的第1448行).此修复程序仍然使用CHROME浏览器版本失败,但可以使用FIREFOX_3_6,FIREFOX_17,INTERNET_EXPLORER_9,INTERNET_EXPLORER_8和INTERNET_EXPLORER_7.jasmine-maven-plugin默认为FIREFOX_3_6 borwser版本,因此无需指定浏览器版本.
| 归档时间: |
|
| 查看次数: |
2155 次 |
| 最近记录: |