我的测试结果为com.example.book.Book : null
。调试测试时,b
对象的创建时"MyBook"
为name
。但由于它具有静态映射belongsTo
,因此测试失败。我该如何做这项工作。当我在Books.groovy中评论belongsTo
映射时,测试通过了。那么如何使用映射测试Domain类。我应该实例化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)
感谢。
答案 0 :(得分:2)
是的,如果没有图书馆,您设置图书的方式就不可能存在。您必须创建一个库并将书分配给它。
使用belongsTo
是否有意义取决于您的要求。你真的需要保存图书馆并将所有图书保存下来吗?