小编pet*_*e83的帖子

使用Mockito时是否可以为所有答案添加拦截器?

假设我的Interface方法有一个验证注释来验证输入参数和返回值.目前是否有可能(V 1.9.5)告诉Mockito在调用过程中调用此验证器?

背景是通过以违反指定验证器的方式模拟给定接口来防止开发人员编写不切实际的测试.

所以我想要的是注册类似的东西

class MyAnswerInterceptor<T> implements AnswerInterceptor<T> {
    @Override
    public Answer<T> intercept(final Answer<T> answer) {
        return new Answer<T>() {
            @Override
            public T answer(InvocationOnMock invocation) throws Throwable {
                validateArguments(invocation);
                T result = answer.answer(invocation);
                validateReturnValue(result);
                return result;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在给定模拟的每个答案上被调用.这有可能吗?我已经查看了代码,也检查了我是否可以在某些时候进行攻击(甚至使用反射等),但似乎是由于实例创建和逻辑的纠缠,它几乎不可能实现我想要的(即类似的东西MockHandler mockHandler = new MockHandlerFactory().create(settings);使得无法挂钩并将自定义的东西放在顶部而无需修补和部署整个东西......)

任何见解都将受到高度赞赏:-)

java mockito

6
推荐指数
1
解决办法
947
查看次数

标签 统计

java ×1

mockito ×1