Grails和Geb:可重复删除测试
我想用Geb、Grails和RemoteControl测试一个简单的CRUD删除 下面是我的简化代码:Grails和Geb:可重复删除测试,grails,spock,geb,Grails,Spock,Geb,我想用Geb、Grails和RemoteControl测试一个简单的CRUD删除 下面是我的简化代码: test "Delete a book"() { when: to BookShowPage // book/show/1 deleteLink.click(BookListPage) then: // ... cleanup: def remote = new RemoteControl() remote {
test "Delete a book"() {
when:
to BookShowPage // book/show/1
deleteLink.click(BookListPage)
then:
// ...
cleanup:
def remote = new RemoteControl()
remote {
new Book(title:'title').save(failOnError: true, flush: true)
return true
}
}
但是我怎样才能使我的测试重现
如果我重复我的测试,新书将有另一个id,因此测试失败。根据railsdog的评论,我决定在给定的块中创建一本新书 下面是正确的代码:
test "Delete a book"() {
given:
def remote = new RemoteControl()
def bookId = remote {
Book book = new Book(title:'title').save(failOnError: true)
return book.id
}
when:
to BookShowPage, bookId // (*)
deleteLink.click(BookListPage)
then:
// ...
cleanup:
remote {
Book book = Book.get(bookId)
if (book) {
// Test fails and we have junk into the db...
book.delete(failOnError: true)
}
return true
}
}
(*)请参阅。在给定的:块中设置书籍并检索书籍ID,使“to BookShowPage”使用添加到给定块中的书籍ID(我假设您可以这样做,我自己还没有进入Geb),并且您应该是可复制的?这是一个好方法。我只需要发现热传递id到geb页面。。。非常感谢。