对于我目前的项目,我正在使用Jasmine设置JS测试。我们希望我们的测试在每个构建上自动运行,因此我将其插入到Maven构建中。我可以运行一些Javascript的基本测试,一切都在工作。到现在为止还挺好!
但是,我们正在构建一个富客户端接口,并对服务器进行了大量的回调 - 因此,我们的代码中有很多$ .ajax调用。每当我尝试加载包含调用的JS文件(不执行测试,处理甚至还没有)时,Maven构建每次都会崩溃,因为它尝试进行回调:
[ERROR] Caused by: java.io.FileNotFoundException: F:\Users\gjoris\Development\Source\xxx\xxx-war\target\jasmine\rest\xxx\search (The system cannot find the path specified)
所以,只是为了说清楚:我不在这里运行测试,我只是加载源代码。这是我的插件的配置:
<plugin>
<groupId>com.github.searls</groupId>
<artifactId>jasmine-maven-plugin</artifactId>
<version>1.2.0.0</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
<configuration>
<sourceIncludes>
<include>sorting*.js</include>
<include>*blabla*.js</include>
</sourceIncludes>
<jsSrcDir>${project.basedir}/src/main/webapp/resources/scripts/</jsSrcDir>
<jsTestSrcDir>${project.basedir}/src/test/javascript</jsTestSrcDir>
<timeout>300</timeout>
<preloadSources>
<!-- Load basic libraries for application-->
<source>${project.basedir}/src/main/webapp/resources/scripts/libs/knockout-2.1.0.js</source>
<source>${project.basedir}/src/main/webapp/resources/scripts/libs/jquery-1.7.2.min.js</source>
<!-- Load all necessary Jasmine plugins -->
<source>${project.basedir}/src/test/javascript/libs/jasmine-ajax/mock-ajax.js</source>
<source>${project.basedir}/src/test/javascript/libs/jasmine-jquery/jasmine-jquery.js</source>
<!-- Load our own mocks -->
(some of our mocks in JS go here)
<!-- Load additional libraries, application specific, which are needed to run -->
(some general JS, which are used everywhere)
</preloadSources>
</configuration>
</plugin>
任何人都有这方面的经验,并知道我如何配置它?
答案 0 :(得分:0)
我已经有了答案,但可以肯定的是,我会在这里发布。
问题是我们也在使用KnockoutJS,并且模型在加载时执行了ajax调用。
我现在所做的是将敲除加载功能提取到一个不同的JS文件中,我没有将其加载到我的预加载源中。这样,我可以测试我的模型上的所有内容,但是ajax调用不会在预加载时执行。因此,我可以模拟ajax调用。