2012-10-08 34 views
0

Grails 2.0- 當單元測試使用命名查詢的控制器時,我得到「BaseDomain上找不到的屬性(subdomain1property)」錯誤。應用程序運行良好並返回正確的結果,但單元測試失敗。在域類層次結構中使用namedQuery的Grails 2.0單元測試問題

class BaseDomain { 
    static namedQueries = { 
     listDuplicates {instance -> 
      if(instance instanceof SubDomain1) { 
      eq('subdomain1property', instance.subdomain1property) 
      } 
     } 
    } 
} 

class SubDomain1 extends BaseDomain { 
    String subdomain1property 
} 

的控制器單元測試有

@Mock([BaseDomain, SubDomain1]) 

該控制器具有此行

BaseDomain.listDuplicates(instance) 
+0

您正在嘗試使用超類中的子類屬性。 BaseDomain沒有訪問權限。爲什麼你沒有在SubDomain1中創建這個namedQuery? –

+0

我有從BaseDomain擴展的SubDomain1,SubDomain2,SubDomain3子類。我不想爲每個子類重複此查詢。爲了簡潔起見,此查詢中沒有列出問題中列出的所有子類的其他屬性。順便說一下,應用程序運行正常,並返回SubDomain1,SubDomain2,SubDomain3的正確結果。單元測試失敗。我在想一定有一些嘲弄可以解決我的單元測試問題 – RRK

回答

0

搬離單位,以集成測試的具體測試案例和解決的問題。如果我在單元測試中找到一種方法來模擬多態性,我會更新答案。