标签: grails-test

Spock - 嘲弄外部服务

我是spock框架测试的新手,我没有找到任何可以找到所需信息的例子.因此,我认为最好的方法是展示一个我需要的例子.

  1. 例如spock中的测试类:

    def "getData" (){ // this is test of getData method from ExternalService
      when:
        Result result = externalService.getData()
      then:
        result.msg = 'SUCCESS'
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 服务类别:

    public class ExternalService(){
      private ServiceConnector serviceConnector;
    
      public Result getData(){
        Result result = serviceConnector.callAndGet(); 
        prepareInformation(data);
        updateStatuses(data);
        return result;
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 类数据作为域类:

    public class Data {
      private String msg
      private int Id
      // +getters/setters
    }
    
    Run Code Online (Sandbox Code Playgroud)

现在我有getData测试,并想嘲笑唯一的方法callAndGet().这意味着每次调用时callAndGet我都需要使用带有msg SUCCESS的对象数据,但是getData应该正常调用方法中的所有其他方法.

这是可以理解的吗?问题是我们如何将服务类注入/模拟ExternalService到spock测试类中?

groovy mocking spock grails-services grails-test

2
推荐指数
1
解决办法
1717
查看次数

标签 统计

grails-services ×1

grails-test ×1

groovy ×1

mocking ×1

spock ×1