2016-03-21 21 views
1

Basit bir CRUD silinmesini Geb, Grails ve RemoteControl ile test etmek istiyorum. İşte benim basitleştirilmiş kodGrails and Geb: Tekrar üretilebilir silme testi

:

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 
    } 
} 

Ama nasıl benim test tekrarlanabilir yapabilir?

Testimi tekrar edersem, yeni kitabın başka bir kimliği olur ve test başarısız olur.

+0

Kitap kurulumunuzu belirli bir şekilde yapın: engelleme ve Kitabın kimliğini alın, '' BookShowPage '' kitabını, belirtilen blokta eklenen Kitabın kimliğini kullanın (Bunu yapabileceğinizi varsayalım, henüz kendime hamile kaldım) ve tekrarlanabilir olmalısın? – railsdog

+0

Bu iyi bir yol. Sadece hamile sayfayı id sayfasını geçmek için bulmalıyım. Teşekkür ederim. –

cevap

1

Railsdog'un yorumuna göre, verilen blokta yeni bir Kitap oluşturmayı çözdüm.

İşte doğru kodu:

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 
    } 
} 

(*) how to customize Geb page URL bakınız.