2015-04-01 66 views
0

我使用grails create-service TaskCRUDService創建了Grails服務。該命令在test\unit文件夾中創建了grails-app\servicesTaskCRUDServiceSpec.groovy中的文件TaskCRUDService.groovy如何測試我的Grails服務保存方法?

唯一的方法我TaskCRUDService

Task save(String name) { 
    Task task = new Task() 
    task.name = name 

    task.save(flush: true, failOnError: true) 
} 

我想測試這種方法的話,我已經填充了測試類由Grails的產生「測試的東西」方法的主體。所以這是我TaskCRUDServiceSpec代碼:

@TestFor(TaskCRUDService) 
class TaskCRUDServiceSpec extends Specification { 

    void "test something"() { 
     when: 
      Task t = service.save('task name') 
     then: 
      assert t.name == 'task name' 
    } 
} 

但測試不起作用。當我運行grails test-app我得到

java.lang.IllegalStateException: Method on class [Task] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails correctly. 
     at TaskCRUDService.$tt__save(TaskCRUDService.groovy:29) 
     at TaskCRUDServiceSpec.test create(TaskCRUDServiceSpec.groovy:24) 

回答

4

這看起來像它應該工作,但即使做了,這是一個壞的測試。切勿使用單元測試來測試持久性。使用集成測試,以便使用真實數據庫,而不僅僅是使用ConcurrentHashMap存儲數據的內存GORM實現。