grails中的一对多映射引发异常
我是Groovy&Grails的新手。我正在处理Grails中的一对多关系示例之一 下面是代码grails中的一对多映射引发异常,grails,Grails,我是Groovy&Grails的新手。我正在处理Grails中的一对多关系示例之一 下面是代码 class User { //properties String login String password String role //constraints and order of display of fields in UI static constraints = { login(blank: false, nullabl
class User {
//properties
String login
String password
String role
//constraints and order of display of fields in UI
static constraints = {
login(blank: false, nullable: false, unique: true)
password(blank: false, nullable: false, password: true)
role(inList:["Admin", "Member"])
}
static hasMany = [posts : Post]
}
class Post {
String content
Date dateCreated
static constraints = {
content(blank: true)
}
static belongsTo = [user : User]
}
我的Groovy测试课
@TestFor(User)
class UserTests {
void testUserToPost() {
def user = new User(login: "joe", password: "joe", role:"Admin")
user.addToPosts(new Post(content: "First"));
user.addToPosts(new Post(content: "Second"));
user.addToPosts(new Post(content: "Third"));
user.save(flush: true)
assertEquals 3, User.get(user.id).posts.size()
}
}
运行测试类时,出现以下异常:
groovy.lang.MissingMethodException: No signature of method: com.library.forum.User.addToPosts() is applicable for argument types: (com.library.forum.Post) values: [com.library.forum.Post : (unsaved)]
Possible solutions: getPosts() at com.library.forum.UserTests.testUserToPost(UserTests.groovy:17)
谁能告诉我代码中的问题在哪里。您需要模拟所有相关的域类。更改:
@TestFor(User)
class UserTests {
到
如果需要,mock注释支持类列表,例如:
@mock([Domain1,Domain2,Domain3])
您需要模拟所有相关的域类。更改:
@TestFor(User)
class UserTests {
到
如果需要,mock注释支持类列表,例如:
@mock([Domain1,Domain2,Domain3])
自Grails 2.1.4以来,由于性能问题,mock行为发生了变化。因此,您需要模拟被模拟实体的所有关联实体
请参阅GRAILS-9637-由于性能问题,@Mock不再模拟
模拟实体的关联实体。必须手动执行这些操作
明确规定。例如,在2.1.4和
以上:
要更正上述测试,您需要模拟作者和书籍:
您可以对此进行检查。自Grails 2.1.4以来,由于性能问题,模拟行为发生了变化。因此,您需要模拟被模拟实体的所有关联实体 请参阅GRAILS-9637-由于性能问题,@Mock不再模拟 模拟实体的关联实体。必须手动执行这些操作 明确规定。例如,在2.1.4和 以上: 要更正上述测试,您需要模拟作者和书籍: 你可以检查一下
@Mock(Author)
void testAddToBooks() {
def a = new Author()
a.addToBooks(new Book())
}
@Mock([Author, Book])
void testAddToBooks() {
def a = new Author()
a.addToBooks(new Book())
}