4

私のテストの出力はcom.example.book.Book : null. テストをデバッグすると、bオブジェクトは として作成さ"MyBook"れますname。しかし、静的なマッピングbelongsToがあるため、テストは失敗します。どうすればこれを機能させることができますか。belongsToBooks.groovyのマッピングにコメントすると、テストに合格します。では、マッピングを使用してドメイン クラスをテストするにはどうすればよいでしょうか。オブジェクトをインスタンス化し、Libraryそれにオブジェクトを追加する必要がBookありますか? しかし、それは単体テストであることが意図されているため、ドメインクラスを分離してテストすることにはなりませんよね?

以下は私のコードです。

ドメイン:

//Book.groovy
package com.example.book

class Book {
    static constraint = {
        name blank: false, size: 2..255, unique: true
    }
    static belongsTo = [lib: Library]
    String name
}

//Library.groovy
package com.example.library

class Library {
    static hasMany = [book: Book, branch: user: User]
    static constraints = {
        name blank: false
        place blank: false
    }
    String name
    String place
}

単体テスト:

//BookUnitTests.groovy
package com.example.book

import grails.test.*

class BookUnitTests extends GrailsUnitTestCase {
    protected void setUp() {
        super.setUp()
        mockForConstraintsTests(Book)
    }

    protected void tearDown() {
        super.tearDown()
    }

    void testPass() {
        def b = new Book(name: "MyBook")
        assert b.validate()
    }
}

テスト出力:

Failure:  testPass(com.example.book.BookUnitTests)
|  Assertion failed: 

assert b.validate()
       | |
       | false
       com.example.book.Book : null

       at com.example.book.BookUnitTests.testPass(BookUnitTests.groovy:17)

ありがとう。

4

1 に答える 1

2

はい、このように本を設定した方法では、図書館なしでは存在できません。ライブラリを作成し、それに本を割り当てる必要があります。

使用belongsToする意味があるかどうかは、要件によって異なります。ライブラリを保存する必要があり、結果としてすべての本が保存されるようにする必要がありますか?

于 2012-03-22T15:42:27.850 に答える