【发布时间】:2014-07-05 22:52:58
【问题描述】:
我是 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"
我能够验证最终使用Mockito.verify() 可以轻松调用process()。
然而,到目前为止,尝试检查 params 是否包含动作 "submit" 非常困难。
我尝试了以下方法,但它不起作用:(
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))
有什么建议吗?
【问题讨论】:
标签: java mockito matcher argument-matcher