создание древовидной структуры в GORM - PullRequest
2 голосов
/ 23 марта 2011

Я пытаюсь правильно определить древовидную структуру в GORM и у меня возникли проблемы.

У меня есть один объект домена:

class Navigation {
    Navigation parent
    List children;
    String name;

    static belongsTo = [parent: Navigation]
    static hasMany = [children: Navigation]

    static constraints = {
        parent(nullable: true);
    }
}

и тест:

void testTree() {
    Navigation root = new Navigation(name:"root");
    Navigation top1 = new Navigation(name:"home");
    Navigation top2 = new Navigation(name:"services");

    root.addToChildren(top1).addToChildren(top2).save(flush: true);

    Navigation s1 = new Navigation(name:"plumbing")
    Navigation s2 = new Navigation(name:"baking")

    top2.addToChildren(s1).addToChildren(s2).save(flush: true);

    Navigation t = Navigation.findByName("root")
    assert t.children.size() == 2
}

если я запускаю этот тест, я получаю эту ошибку:

org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: grails.Navigation.addToChildren() is applicable for argument types: (grails.Navigation) values: [grails.Navigation : null]

и если я помещаю содержимое этого теста в boostrap, я не получаю эту ошибку, и приложение запускается, за исключением того, что таблица навигации пуста

что я могу сделать, чтобы это исправить?

1 Ответ

2 голосов
/ 23 марта 2011

Вам необходимо смоделировать домен Navigation, чтобы вы могли использовать методы GORM в своем модульном тесте.

Добавьте это в начало вашего теста:

mockDomain(Navigation)
...