使用maven运行AngularJS测试

时间:2013-10-14 19:22:56

标签: javascript unit-testing maven angularjs

您好我是AngularJS的新手并且正在测试JS。我需要用maven运行我的测试。我为一个小应用程序创建了一个控制器和一个服务,他们正在工作。现在我想为我的JS代码编写测试(是的,打破了开发时编写测试的规则)。到目前为止,我已设法用maven调用测试。

我正在使用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 test 时,我会看到以下内容

[INFO] --- jasmine-maven-plugin:1.3.1.3:test(默认)@ pod-manager-web-ang --- 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:已启动SelectChannelConnector@0.0.0.0:56475 [INFO]执行Jasmine规范

然后失败并显示以下信息

[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文件来运行这些测试?

1 个答案:

答案 0 :(得分: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>