2013-10-14 81 views
3

嗨我是AngularJS和測試JS的新手。我需要用maven運行我的測試。我爲一個小應用程序創建了一個控制器和一個服務,他們正在工作。現在我想編寫測試(是的,打破了編寫測試的規則,同時開發)爲我有的JS代碼。到目前爲止,我已經設法用maven調用測試。使用Maven運行AngularJS測試

我正在使用jasmine-maven-plugin。

<plugin> 
    <groupId>com.github.searls</groupId> 
    <artifactId>jasmine-maven-plugin</artifactId> 
    <version>1.3.1.3</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>test</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <jsSrcDir>src/main/webapp/js</jsSrcDir> 
     <jsTestSrcDir>src/test/webapp/js</jsTestSrcDir> 
     <specIncludes> 
      <include>*Spec.js</include> 
     </specIncludes> 
    </configuration> 
</plugin> 

當運行MVN測試我看到下面的

[INFO] ---茉莉Maven的插件:1.3.1.3:測試(默認)@莢經理的Web昂 - - 2013-10-14 14:57:34.322:INFO:oejs.Server:jetty-8.1.13.v20130916 2013-10-14 14:57:34.378:INFO:oejs.AbstractConnector:Started [email protected]。 0.0:56475 [INFO]執行茉莉花規格

然後失敗wi下面第

[ERROR] Caused by: net.sourceforge.htmlunit.corejs.javascript.EcmaError: ReferenceError: "angular" is not defined. (http://localhost:56475/src/controllers/controller.js#3) 
[ERROR] at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3603) 
[ERROR] at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3587) 
[ERROR] at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3657) 
[ERROR] at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.name(ScriptRuntime.java:1685) 

消息的問題是,我應該把angular.js等角度JS文件這些測試運行?

回答

7

使用preloadSources來加載Angular,jQuery和其他需要的庫。

<configuration> 
    <preloadSources> 
     <source>${project.basedir}/src/main/webapp/vendor/jquery/1.10.2/jquery.js</source> 
     <source>${project.basedir}/src/main/webapp/vendor/angular/1.0.5/angular.js</source> 
    </preloadSources> 
    <jsSrcDir>src/main/webapp/js</jsSrcDir> 
    <jsTestSrcDir>src/test/webapp/js</jsTestSrcDir> 
    <specIncludes> 
     <include>*Spec.js</include> 
    </specIncludes> 
</configuration> 
+0

您好kseb,感謝您的迴應,爲什麼我需要jQuery文件,現在我的代碼工作正常,沒有他們。這是我需要運行單元測試嗎? – Sri

+0

由於jqLit​​e實現有限,我需要jQuery。我從jQuery使用更多的東西。所以對我來說重要的是要包括它。儘管你的需求可能不同。 – kseb

+0

使用preloadSources標記是我原始問題的正確選項。但我仍然無法讓測試運行無頭,我可以使用「mvn jasmine:bdd」命令運行它們。我沒有包含jquery,因爲我不需要它們。 – Sri