私のテストの出力はcom.example.book.Book : null
. テストをデバッグすると、b
オブジェクトは として作成さ"MyBook"
れますname
。しかし、静的なマッピングbelongsTo
があるため、テストは失敗します。どうすればこれを機能させることができますか。belongsTo
Books.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)
ありがとう。