我是 Mockito 的新手,我正在尝试验证在方法中创建的对象的属性。
下面的伪代码:
class A{
...
public String methodToTest(){
Parameter params = new Parameter(); //param is basically like a hashmap
params.add("action", "submit");
return process(params);
}
...
public String process(Parameter params){
//do some work based on params
return "done";
}
}
我想测试两件事:
当我打电话时
methodToTest
,process()
方法被调用process()
使用包含操作的正确参数调用方法"submit"
我能够验证process()
最终很容易使用Mockito.verify()
. "submit"
然而,到目前为止,尝试检查 params 是否包含动作非常困难。
我尝试了以下方法,但它不起作用:(
BaseMatcher<Parameter> paramIsCorrect = new BaseMatcher<Parameter>(){
@Overrides
public boolean matches(Object param){
return ("submit".equals((Parameter)param.get("action")));
}
//@Overrides description but do nothing
}
A mockA = mock(A);
A realA = new A();
realA.methodToTest();
verify(mockA).process(argThat(paramIsCorrect))
有什么建议吗?