0

所以我们有一个宁静的服务,我们想在grails中使用restclient进行测试。如何在Grails中设置功能测试的测试数据?

测试代码应该是这样的......

class MyControllerSpec extends Specification { 

def setup() { 
    this.dbEntity = new DbEntity("someid123").save(); 
} 

void "Test entity GET"{ 
     given: 
      RestBuilder rest = new RestBuilder() 

     when: "The DB entity service is hit" 
      RestResponse restResponse = rest.post("http://localhost:8080/api/someentity/$id"); 

     then: "A 200 error is sent" 
      restResponse.status == 200 


} 

我遇到的问题是设置方法上.save炸毁()因为没有休眠会话。如何在运行测试之前操作我的数据库?

+0

您是否尝试添加测试“setup:”block? – Koloritnij

回答

0

您可以定义一个名为“setupData”的方法,并在“Test entity GET”测试用例的“给定”块中调用它。

def setupData() { this.dbEntity = new DbEntity("someid123").save(); } 
0

如果您需要在每个funcional测试之前加载一些数据,你可以创建一个辅助类,与@Shared变量或方法,或两者​​兼而有之。即使你可以覆盖该类中的setup,setupSpec方法。

您的第一个类现在没有扩展Specification,DataLoader类(帮助类)。

class MyControllerSpec extends DataLoader { 

    void setup(){ 
     createEntity() 
    } 


    void "Test entity GET"{ 
      given: 
       RestBuilder rest = new RestBuilder() 

      when: "The DB entity service is hit" 
       RestResponse restResponse = rest.post("http://localhost:8080/api/someentity/$dbEntity.id"); 

      then: "A 200 error is sent" 
       restResponse.status == 200 

    } 
} 

而你的助手类是扩展规范,其方法和@Shared变量的类。

import spock.lang.Shared 

class DataLoader extends Specification { 

    @Shared DbEntity dbEntity 

    void createEntity(){ 
     dbEntity = new DbEntity("someid123").save(); 
    } 

} 
相关问题