2012-10-23 21 views
7

Tôi đang cố gắng thực hiện kiểm tra đơn vị trên phương thức namedquery và nó không hoạt động như tôi đang sử dụng phương thức grails.orm.HibernateCriteriaBuilder.createAlias ​​dường như không được Grails tìm thấy: "Không có chữ ký của phương thức: grails.gorm.CriteriaBuilder.createAlias ​​()"Kiểm tra đơn vị Grails "CreateAlias" không hoạt động

Tôi đoán vấn đề là khi thực hiện kiểm tra đơn vị và chế nhạo lớp, nó cố gắng tìm phương pháp xung quanh "grails.gorm.CriteriaBuilder" lớp và không phải là grails.orm.HibernateCriteriaBuilder lớp, tại sao ?? bất kỳ ý tưởng để giải quyết nó?

class Book{ 
    static namedQueries = {  
     testMethod() 
     { 
     createAlias('name', 'james') 
     } 
    } 
} 



@Mock([Book]) 
class BookTests{ 
    @Test 
    void myTest() { 
     Book.testMethod(); 
    } 
} 

Lỗi: Không có chữ ký của phương pháp: grails.gorm.CriteriaBuilder.createAlias ​​()

Trả lời

2

Chúng tôi không thể con số này ra một trong hai; chúng tôi nghi ngờ nó chỉ thiếu từ việc thực hiện GORM UnitTest. Nhưng nếu bạn chỉ muốn truy vấn một liên kết, trong Grails bạn không cần một bí danh. Quan sát:

Book.createCriteria { 
    eq("title", "One Hundred Years of Solitude") 
    author { 
     eq("name", "Gabriel García Márquez") 
    } 
} 
+0

Thực ra, đôi khi bạn cần bí danh - đó là cách duy nhất để chỉ định tham gia bên trái. Vì vậy, '' 'Book.withCriteria {createAlias ​​('tác giả', 'a', JoinType.LEFT_OUTER_JOIN) hoặc {isNull ('a.name') eq ('a.name', 'Fred')}}' '' sẽ khá hữu ích để có thể kiểm tra, nhưng theo như tôi biết, nó không thể kiểm tra được bằng bất kỳ cách nào - một người nào đó cho tôi thấy tôi sai! –

Các vấn đề liên quan