我有一個方法是這樣的:關閉驗證覆蓋默認嘲諷
public void save(DbSession session,Wrappe wrapper,Wrappe wrappe){
//...other logic
//save wrapper
wrapper=(Wrapper)session.save(wrapper)
//set wrapper's id into wrappee
wrappee.setWrapperId(wrapper.getId());
//save wrappee
session.save(wrappee);
}
和測試代碼如下所示:
given:
session.save(_) >> wrapperWithGeneratedId
when:
obj.save(session,wrapper,wrappee)
then:"wrapper got saved"
1*session.save(_) >> {Wrapper save ->
diffs(wrapper,saved)==null
}
and:"wrappee"
1*session.save(_) >> {Wrappe saved ->
diffs(wrappee,saved)==null
}
這些測試代碼會給出一個例外:
java.lang.ClassCastException: java.lang.Boolean cannot be cast to com.company.model.Wrapper
如果在「然後」部分評論驗證關閉,測試將通過,所以我猜這部分
1*session.save(_) >> {Wrapper save ->
diffs(wrapper,saved)==null
}
凌駕於這個嘲弄:
session.save(_) >> wrapperWithGeneratedId
任何方法都做正確?