如何在groovy bean的方法中加载请求?

时间:2015-01-02 15:17:40

标签: groovy soapui

我想创建一个groovy的bean,它接受请求的参数,并在参数总和为正时返回适当的响应。我想知道如何在groovy bean的方法中加载我的请求

import com.eviware.soapui.support.XmlHolder
import com.eviware.soapui.support.GroovyUtils
import com.eviware.soapui.model.mock.*
import org.apache.commons.lang.StringUtils
import groovy.util.*
import groovy.lang.*

public class Test
{
    public int somme ()
    {
        def holder = new XmlHolder(mockRequest.getRequestContent())
        def a = holder["//firstInt:a"]
        def b = holder["//secondInt:b"]
        return(a + b)
    }

    public String getResponse ()
    {
        Test t = new Test ()
        if (t.somme() > 0)
        {
            return "response1"
        }
        else
        {
           return "response2"
        }
    }
  }

当我运行此代码时,我有以下错误:

  

com.eviware.soapui.impl.wsdl.mock.DispatchException:失败   使用脚本发送; groovy.lang.MissingPropertyException:没有这样的   property:mockRequest for class:Test

1 个答案:

答案 0 :(得分:0)

你的课应该是这样的。

请注意更改:

  1. 声明mockRequest成员变量,将其作为参数传递给类的构造函数。
  2. getResponse()方法不需要创建对象,而是可以根据需要在其他脚本中执行。就像Mock响应的脚本mockRequest可用。
  3. import com.eviware.soapui.model.mock.MockRequest 
    import com.eviware.soapui.support.XmlHolder 
    public class Test {
      MockRequest mockRequest 
      public Test(MockRequest mockRequest) {
        this.mockRequest=mockRequest
      }
      public int somme () {
        def holder=new XmlHolder(mockRequest.getRequestContent()) 
        def a=holder["//firstInt:a"] 
        def b=holder["//secondInt:b"] 
        (a + b)
      }
      public String getResponse () {
        somme() ? "response1" : "response2"
      }
    }