如何将上下文从脚本传递到另一个groovy类

如何将上下文从脚本传递到另一个groovy类,groovy,soapui,Groovy,Soapui,下面是我的Groovy脚本,它实例化了我的类。它是一个更大的Groovy脚本的一部分,由许多类组成,这些类作为测试用例位于SoapUI的测试套件中: public class Run extends Script { public static void main (String[] args){ Run mainRun = new Run() } public run(){ def groovyUtils = new com.eviware.soapui.support.Gro

下面是我的Groovy脚本,它实例化了我的类。它是一个更大的Groovy脚本的一部分,由许多类组成,这些类作为测试用例位于SoapUI的测试套件中:

public class Run extends Script {
public static void main (String[] args){
    Run mainRun = new Run()
}
public run(){
    def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context ); // Would not error
    Model myModel = new Model()
    View myView = new View()
    Controller myController = new Controller()
    myModel.addObserver (myView)
    myController.addModel(myModel)
    myController.addView(myView)
    myController.initModel("Init Message")
    myView.addController(myController)
}}
在上面的“Run”类中(如果我愿意的话),我能够引用“context”——以便定义GroovyUtils。如何将“上下文”传递给另一个类,即模型,以便在模型中使用GroovyUtils?即:

class Model extends java.util.Observable {
public String doSomething(){
    def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context );// Error occurs here
    return "Stuff that needs groovyUtils"
}}

上述代码在尝试引用上下文时会导致错误,尽管它与“Run”类位于同一Groovy测试步骤中。任何帮助都将不胜感激。

我不确定我是否正确理解了您模型的所有部分,但是正如@tim_yates在他的评论中所建议的,为什么您不简单地将
groovyUtils
传递给您的
模型
类。您可以通过添加
groovyUtils
变量来修改
模型
类:

class Model extends java.util.Observable {

    com.eviware.soapui.support.GroovyUtils groovyUtils

    public String doSomething(){
            println this.groovyUtils// here you've groovy utils
            return "Stuff that needs groovyUtils"
    }   
}
然后在
run()
方法中,使用groovy默认映射构造函数将
groovyUtils
传递给
Model
类:

public class Run extends Script {
public static void main (String[] args){
    Run mainRun = new Run()
}
public run(){
    def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context ); // Would not error
    Model myModel = new Model('groovyUtils':groovyUtils) // pass the groovyUtils to your Model
    assert "Stuff that needs groovyUtils" == myModel.doSomething() // only to check the groovyUtils is passed to your model class
    assert myModel.groovyUtils == groovyUtils
    ...
}}

希望有帮助,

为什么不直接将GroovyTils传递给该方法呢?为什么你必须在两个地方得到它?我不知道如何将它传递给方法。因为“Run”类从不直接与“Model”类中的方法通信。非常感谢-这正是我所需要的!