Grails徹底入門のサンプルアプリを写経中です。
- 作者: 山田正樹,山本剛,上原潤二,永井昌子,杉山清美,杉浦孝博,笠原史郎,香月孝太,福岡竜一,伊堂寺北斗
- 出版社/メーカー: 翔泳社
- 発売日: 2008/08/26
- メディア: 大型本
- 購入: 3人 クリック: 42回
- この商品を含むブログ (28件) を見る
結構いろんなところでワナがあってなかなか進みません(T_T)
特に4章のWebFlowのところでいろいろはまったので、メモを残しておきます。
環境
Webflowがデフォルトで組み込まれていない
まずWebflowはGrails1.2からはgrails-coreから除外されているため、プラグインをインストールする必要があります。
grails install-plugin webflow
そうすると下記のエラーが発生します
〜略 :::::::::::::::::::::::::::::::::::::::::::::: :: UNRESOLVED DEPENDENCIES :: :::::::::::::::::::::::::::::::::::::::::::::: :: org.springframework.webflow#org.springframework.webflow;2.0.8.RELEASE: not found :: org.springframework.webflow#org.springframework.binding;2.0.8.RELEASE: not found :: org.springframework.webflow#org.springframework.js;2.0.8.RELEASE: not found :::::::::::::::::::::::::::::::::::::::::::::: | Error Failed to resolve dependencies (Set log level to 'warn' in BuildConfig.groovy for more information): - org.springframework.webflow:org.springframework.webflow:2.0.8.RELEASE - org.springframework.webflow:org.springframework.binding:2.0.8.RELEASE - org.springframework.webflow:org.springframework.js:2.0.8.RELEASE 〜略
Webflow系の3つのアーティファクト依存性が解決できないと怒られてます。
Repository設定の追加
調べたところ、WebflowのアーティファクトはSpringSource Bundle Repositoryから取得する必要があるみたいです。
と、いうことでBuildConfig.groovyのrepositoriesブロックに以下の記述を追加します。
repositories { inherits true // Whether to inherit repository definitions from plugins grailsPlugins() grailsHome() grailsCentral() mavenLocal() mavenCentral() // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories //mavenRepo "http://snapshots.repository.codehaus.org" //mavenRepo "http://repository.codehaus.org" //mavenRepo "http://download.java.net/maven/2/" //mavenRepo "http://repository.jboss.com/maven2/" mavenRepo "http://repository.springsource.com/maven/bundles/release" // <- ここ mavenRepo "http://repository.springsource.com/maven/bundles/external" // <- ここ }
もう一回install-pluginコマンドを打つと、今度はちゃんと上記のアーティファクトがダウンロードされます。
WebFlowTestCaseの仕様変更
Grails1.1よりWebFlowTestCaseの仕様が変わったらしく、P165,リスト4.9のテストケースが失敗します。
参考:Grails goes on: WebFlowTestCaseが変わったらしい
失敗するテストケース
void testSearchFlowStart() { setFlow(new OrderController().searchFlow) def viewSelection = startFlow() assertEquals "search", viewSelection.viewName }
Viewの状態を確認する場合は、assertCurrentStateEquals(String)メソッドを使うようです。
以下のように修正したら通りました。
修正版
void testSearchFlowStart() { setFlow(new OrderController().searchFlow) startFlow() assertCurrentStateEquals("search") }