我有一个方法:
public class Sender{
public Object send(Object param){
Object x;
.....
return (x);
}
}
我想使用Mockito为此方法编写单元测试,以便返回类型值基于参数的类类型。所以我这样做了:
when(sender.send(Matchers.any(A.class))).thenReturn(value1);
when(sender.send(Matchers.any(B.class))).thenReturn(value2);
但是返回值与参数类类型无关,总是值2.如何使它为类A类型参数返回值1,为类B类型参数返回值2.
答案 0 :(得分:3)
with w_data as ( select 1 event_id, 1.01 event_rank, 12345 c_procedure, 'AA' modifier from dual union all select 1 event_id, 1.02 event_rank, 12345 c_procedure, 'AB' modifier from dual union all select 1 event_id, 1.03 event_rank, 67890 c_procedure, 'ZZ' modifier from dual union all select 2 event_id, 2.01 event_rank, 12345 c_procedure, 'AA' modifier from dual union all select 2 event_id, 2.02 event_rank, 67890 c_procedure, 'ZZ' modifier from dual ) Select event_id, event_rank, c_procedure, modifier from ( select event_id, event_rank, c_procedure, modifier, count(*) over (partition by event_id, c_procedure) dup_chk from w_data ) where dup_chk > 1 / EVENT_ID EVENT_RANK C_PROCEDURE MO ---------- ---------- ----------- -- 1 1.01 12345 AA 1 1.02 12345 AB 2 rows selected.
Mockito将尝试使用签名when(sender.send(Matchers.any(A.class))).thenReturn(value1);
来模拟方法,而不是send(A param)
。
您需要的是根据您的参数类返回不同的值。你需要使用Answers。
send(Object param)
答案 1 :(得分:0)
几个选项:
请勿使用any
。使用您在测试中使用的A
或B
的实例。
使用Answer
对象,可以指定要返回的内容。