1

Grailsフレームワークの勉強とアプリ開発をしています。

現時点では、複数のプラグインを持つメイン アプリケーションがあります。

したがって、階層は次のようになります。

  • MyMainApp
    • MyFirstPlugin
    • MySecondPlugin
    • ...

プラグインの UrlMappings テストを書きたいと思います。私はドキュメントを書きましたが、おそらく何かが欠けていますが、それらの f* *テストに合格できません。私はいつもエラーをキャッチします

java.lang.IllegalArgumentException: URL '/bar' がどのマッピングとも一致しませんでした

ここに私の FooUrlMappings クラスがあります

class FooUrlMappings {
    static mappings = {

        "/bar/"(controller: 'foo', action: 'show')
    }
}

私の FooUrlMappings クラスは /conf ディレクトリのデフォルト パッケージにあることに注意してください。

今私のコントローラー FooController のコード:

package be.arexo.ehr.employee.rest

import be.arexo.ehr.employee.Employee インポート grails.converters.JSON

class FooController {

    // GET /bar/
    def show() {
        def result = Bar.list()

        render result as JSON
    }
}

だから今、私のテストクラス:

import com.example.FooController
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
import grails.test.mixin.web.UrlMappingsUnitTestMixin

@TestFor(FooUrlMappings)
@Mock(FooController)
class FooUrlMappingsTests {

    void testBarShow(){
        assertForwardUrlMapping("/bar/", controller : "foo", action : "show")
    }
}

私のテストは、test/integration ディレクトリのデフォルト パッケージにも含まれています。

だから私はドキュメントに書かれていることをしたと思います。このテストを実行しようとすると、次のようになります。

java.lang.IllegalArgumentException: URL '/bar' がどのマッピングとも一致しませんでした

私の間違いはどこですか?誰か助けてくれませんか?

4

1 に答える 1

0

URL マッピング テストは、統合テストとしてではなく、単体テストとして実行する必要があります。これで問題が解決します。

@TestFor(FooUrlMappings)

TestFor アノテーションは単体テストでのみ使用できることに注意してください。

私のテストは、test/integration ディレクトリのデフォルト パッケージにも含まれています。

テストを test/unit/ ディレクトリに移動します。

于 2013-07-02T22:24:21.133 に答える