0

私の統合テストでは、次のことを行います。

void testSave() {
    def controller = new BookController()
    controller.params.title = "Awesome Book"
    controller.params.pages = 1000
    controller.save()
    // i want to check book data here
}

Book永続化されたコントローラーを取得して、それを確認するtitle == "Awesome Book"にはどうすればよいpages == 1000ですか? bookInstanceテストからコントローラーの変数に何らかの方法でアクセスできますか?

データベースにブートストラップデータが存在するためBook.get(1)、正しい結果が得られるとは限りません。Bookコントローラーはまったく関係のないページにリダイレクトするため、URL からBook取得できません。id私が考えることができる唯一のことは、次のようなことをすることです:

void testSave() {
    def oldIdList = Book.list()*.id
    // set up the parameters and call controller.save()
    def insertedId = Book.list()*.id - oldIdList
    // check Book.get(insertedId) properties
}

しかし、もっと良い方法があることを願っています...

4

1 に答える 1

2

Grails 2.0.x を使用していると仮定すると、findBy* メソッドを使用して、そのプロパティのいずれかでブックを検索できます。

def book = Book.findByTitle("Awesome Book")
assertNotNull book
于 2012-07-05T06:48:39.293 に答える