編集2:統合テストを作成して、sessionFactoryが正しく注入されていることを確認します。次のGrailsコマンドを実行します。
create-integration-test <package>.MyService
あなたはそれが存在する場合は、テスト/ユニットディレクトリにユニットテストファイルMyServiceSpec.groovy
を削除する必要があります。
は、次のテストを実装します。
class MyServiceSpec extends Specification {
def myService
def setup() {
}
def cleanup() {
}
void "test something"() {
when:
def u = myService.serviceMethod()
then:
u != null
}
}
あなたはまた、私は以下の行ったように、テスト作業をするためにユーザーインスタンスを返すために、あなたのサービスメソッドを変更する必要があります。このテストは
実行test-app <package.MyService -integration
に合格していますか?そうでない場合は、開発環境に関する詳細情報を提供してください。
を編集してください:これはおそらくこの場合は関係ありませんが、Grailsのバージョン/開発環境は何ですか?質問をするときにそれを指定する方が良いです。
まず、GORMを使用していないのはなぜですか?私はgrailsをコアの機能を使用せずに使うことで多くのメリットは得られません。なぜGORMの代わりにsessionFactory
を使用してORMを管理したいのですか?あなたがちょうどnew UserEntity(email:'grails').save()
と呼ぶならば、GORMはフードの下で同じことをします。
これは私の次のポイントになります。あなたはGroovyの機能を使用していません。 Groovyでは、上記のようにマップコンストラクタを使用することができ、そのようなsetterメソッドを使用することもできます:user.email = 'grails'.
サービスメソッドが呼び出された後、 。ただし、これは、サービスメソッドがトランザクション型で、デフォルトでは適用されます。
私はGrailsを使用することをお勧めしませんが、IMHOではGroovyとGrailsの強力なツールを活用せず、Java、Spring、Hibernateをコーディングします。ドメインクラス、コントローラ、ビュー、サービスなどの規約を使用するだけで、その価値があるかどうかわかりません。しかし、それはあなたの選択です。あなたのアプローチは、私が一番言いたいことを驚かせます。
次は、コードの動作方法です。
MyService。グルーヴィー:
@Transactional
class MyService {
def sessionFactory
UserEntity serviceMethod() {
def s = sessionFactory.currentSession
def u = new UserEntity(email:'grails')
s.save(u)
//or:
//def user = new UserEntity()
//user.email = 'grails'
//s.save(user)
//or do it the Java way like in your code
u.id ? u : null
}
}
sessionFactory
は、春には、起動時に命名規則によって、それを注入できるように、サービス内のフィールドとして宣言する必要があります。あなたのコードから判断すると、あなたは春と依存関係の注入に関するさらなる読書をするべきです。 あなたは、私が行ってきました は、実際に私は私のGrailsフレームワークでは、フロントエンドとしてGWTを使用しています、詳細な回答のためTutorialspoint .`
おかげで、最初のステップバイステップを実行して、それを学ぶために、the official Spring documentationを見ているか、可能性私が見つけたチュートリアルでatleastと私はすでにGWTのビューを持っているので、私はデータベースからいくつかのデータを送信する必要があるので、私は今、冬眠をやろうとした。 私は上記のurコードを使用しましたが、 'sessionFactory'はnullと言います。 私のsessionFactoryがnullである理由を教えてください。他の場所に定義する必要がありますか、何かがありません。 thanks – junaidp
Grailsのバージョンは何ですか?サービスコードをどのようにテストしますか?私は私の答えにサンプルの統合テストを含めます。単体テストでは、豆はオートワイヤードではありません。 – nst1nctz
まだこの問題を解決できますか? – nst1nctz