1

如果我写这样的东西:

verify().that( mockPromise.handleFault( any() ))

它可以很好地告诉我调用了“handleFault”。

但后来我想调用传入的故障处理函数。处理程序将是一个私有函数,因此没有其他方法可以访问它。

4

2 回答 2

3

在 Java Mockito 中,您正在寻找的功能称为ArgumentCaptor. 简而言之,它是一种特殊的Matcher(如any()),它匹配任何类型的对象并将它“匹配”的对象保存在变量中。

不幸的是,它似乎还没有在 Flex 中可用

好消息是,如果您愿意,您可能可以在大约Matcher15 分钟内编写一个完全执行此操作的接口实现——保存其最新值并返回 true。:)

祝你好运!

于 2012-09-17T17:35:33.360 回答
0

根据杰夫的回答,我这样做了:

import org.mockito.api.Matcher;

class ArgumentCaptor implements Matcher
{


    private var _value:*;


    public function ArgumentCaptor()
    {
    }

    public function get value():*
    {
        return _value;
    }

    public function describe():String
    {
        return "";
    }

    public function matches(value:*):Boolean
    {
        _value = value;
        return true;
    }
}

可以像这样使用:

var argCaptor:ArgumentCaptor = new ArgumentCaptor();
verify().that( mockPromise.handleFault( argThat(argCaptor) ));

argCaptor.value; // the argument
于 2012-09-17T18:07:13.270 回答