Grails 绑定到集合和地图
在grails文档中:7 Web层-参考文档,部分:绑定到集合和地图;下一个示例如下所示:Grails 绑定到集合和地图,grails,documentation,Grails,Documentation,在grails文档中:7 Web层-参考文档,部分:绑定到集合和地图;下一个示例如下所示: class Album { String title static hasMany = [players: Player] Map players } class Player { String name } def bindingMap = [title: 'The Lamb Lies Down On Broadway', 'play
class Album {
String title
static hasMany = [players: Player]
Map players
}
class Player {
String name
}
def bindingMap = [title: 'The Lamb Lies Down On Broadway',
'players[guitar]': [name: 'Steve Hackett'],
'players[vocals]': [name: 'Peter Gabriel']
'players[keyboards]': [name: 'Tony Banks']]
def album = new Album(bindingMap)
assert album.title == 'The Lamb Lies Down On Broadway'
assert album.players.size() == 3
assert album.players.guitar == 'Steve Hackett'
assert album.players.vocals == 'Peter Gabriel'
assert album.players.keyboards == 'Tony Banks'
def updatedBindingMap = ['players[drums]': [name: 'Phil Collins'],
'players[keyboards]': [name: 'Anthony George Banks']]
album.properties = updatedBindingMap
assert album.title == 'The Lamb Lies Down On Broadway'
assert album.players.size() == 4
assert album.players.guitar == 'Steve Hackett'
assert album.players.vocals == 'Peter Gabriel'
assert album.players.keyboards == 'Anthony George Banks'
assert album.players.drums == 'Phil Collins'
但是,当我运行这个示例时,单元测试失败并产生下一个结果(下面是我的单元测试):
|加载Grails 2.3.11
|配置类路径
.
|设置为测试的环境
........................................
|在没有守护进程的情况下运行。。。
|编译1个源文件。
|正在运行1单元测试。。。第1页,共1页
|正在运行1单元测试。。。第2页,共2页
|失败:使用插入和更新测试构造函数绑定(estudio.AlbumSpec)
|不满足的条件:
album.players.guitar=='Steve Hackett'
| | | |
|| |假
||[姓名:史蒂夫·哈克特]
|[键盘:[姓名:托尼·班克斯]、人声:[姓名:彼得·加布里埃尔]、吉他:[姓名:史蒂夫·哈克特]]
音乐专辑:(未保存)
在estudio.AlbumSpec.test中,通过插入和更新绑定构造函数(AlbumSpec.groovy:51)
|完成2个单元测试,1个在0m 1s内失败
|测试失败-在/Users/hzendejas/my grails projects/estudio/target/test reports中查看报告
错误|
分叉Grails VM已退出,但出现错误
但当我修改assert并将.name属性添加为next时成功:
album.players.guitar.name=='Steve Hackett'
是Grails文档还是我不知道的东西
PD:我成功的单元测试:
package estudio
import grails.test.mixin.TestMixin
import grails.test.mixin.support.GrailsUnitTestMixin
import spock.lang.Specification
/**
* See the API for {@link grails.test.mixin.support.GrailsUnitTestMixin} for usage instructions
*/
@TestMixin(GrailsUnitTestMixin)
class AlbumSpec extends Specification {
void "test constructor binding with insert and updating"() {
given:
def bindingMap =
[title: 'The Lamb Lies Down On Broadway',
'players[guitar]': [name: 'Steve Hackett'],
'players[vocals]': [name: 'Peter Gabriel'],
'players[keyboards]': [name: 'Tony Banks']
]
def updatedBindingMap = [
'players[drums]': [name: 'Phil Collins'],
'players[keyboards]': [name: 'Anthony George Banks']
]
when:
def album = new Album(bindingMap)
then:
album.title == 'The Lamb Lies Down On Broadway'
album.players.size() == 3
album.players.guitar.name == 'Steve Hackett'
album.players.vocals.name == 'Peter Gabriel'
album.players.keyboards.name == 'Tony Banks'
when:
album.properties = updatedBindingMap
then:
album.title == 'The Lamb Lies Down On Broadway'
album.players.size() == 4
album.players.guitar.name == 'Steve Hackett'
album.players.vocals.name == 'Peter Gabriel'
album.players.keyboards.name == 'Anthony George Banks'
album.players.drums.name == 'Phil Collins'
}
def setup() {
}
def cleanup() {
}
void "test something"() {
}
}
这是文件中的一个错误。我刚修好。看
谢谢你的反馈。很抱歉给您添麻烦。结束问题:我刚刚意识到grails文档本身是错误的,因为在前面的示例中,在我问题的示例主题property.name上面,断言中有效地指出了它。