0

現在のプロジェクトでは、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>

誰かがこれを経験していて、私がそれをどのように構成しなければならないか知っていますか?

4

1 に答える 1

0

すでに答えはありますが、確かにここに投稿します。

問題は、KnockoutJSも使用していることと、モデルがロード時にajax呼び出しを実行したことです。

私が今やったことは、ノックアウトロード機能を別のJSファイルに抽出することでした。これは、プリロードされたソースにはロードされていません。そうすれば、モデルですべてをテストできますが、ajax呼び出しはプリロード時に実行されません。したがって、ajax呼び出しをモックすることができます。

于 2012-09-25T08:20:38.057 に答える