2016-03-21 10 views
1

Geb、Grails、RemoteControlを使って簡単なCRUD削除をテストしたいと思います。GrailsとGeb:再現可能な削除テスト

ここに私の簡素化コード:

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を持つので、テストは失敗します。

+0

あなたのブック設定をブロックし、ブックのIDを取得して、特定のブロックに追加されたブックのIDを 'BookShowPage'で消費するようにします(私はこれを行うことができると仮定しています。あなた自身もGebに挑戦しました)、あなたは複製可能でなければなりませんか? – railsdog

+0

これは良い方法です。私はidをgebページに渡すために熱く発見する必要があります... ありがとうございます。 –

答えて

1

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

(*)how to customize Geb page URLを参照してください。

関連する問題