Результат моего теста дает 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)
Спасибо.