org.powermock.mockpolicies.MockPolicyInterceptionSettings Maven / Gradle / Ivy
Show all versions of powermock-core Show documentation
/*
* Copyright 2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.powermock.mockpolicies;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Map;
/**
* Contains interception related settings. PowerMock uses the information stored
* in this object to intercept method calls and field calls etc and specify a
* return value or suppression.
*
* Since mock policies can be chained subsequent policies can override behavior
* of a previous policy. To avoid accidental overrides it's recommended
* add behavior instead of setting behavior since the latter
* overrides all previous configurations.
*/
public interface MockPolicyInterceptionSettings {
/**
* Set which methods to suppress. Note that this overrides all previous
* configurations.
*/
void setMethodsToSuppress(Method[] methods);
/**
* Add methods to suppress upon invocation.
*/
void addMethodsToSuppress(Method methodToSuppress, Method... additionalMethodsToSuppress);
/**
* Add methods to suppress upon invocation.
*/
void addMethodsToSuppress(Method[] methods);
/**
* Set the substitute return values. The substitute return values is a
* key-value map where each key is a method that should be intercepted and
* each value is the new return value for that method when it's intercepted.
*
* Note that this overrides all previous configurations.
*/
void setMethodsToStub(Map substituteReturnValues);
/**
* Add a method that should be intercepted and return another value (
* {@code returnObject}) (i.e. the method is stubbed).
*/
void stubMethod(Method method, Object returnObject);
/**
* Proxy a method with the given invocation handler. Each call to the method
* will be routed to the invocationHandler instead.
*/
void proxyMethod(Method method, InvocationHandler invocationHandler);
/**
* Get all methods that should be proxied and the invocation handler for
* each method.
*/
Map getProxiedMethods();
/**
* Set the methods to proxy. The proxies are a key-value map where each key
* is a method that should be intercepted and routed to the invocation
* handler instead.
*
* Note that this overrides all previous configurations.
*/
void setMethodsToProxy(Map proxies);
/**
* Set the substitute return values. The substitute return values is a
* key-value map where each key is a method that should be intercepted and
* each value is the new return value for that method when it's intercepted.
*
* Note that this overrides all previous configurations.
*
* @deprecated Use {@link #stubMethod(Method, Object)} instead.
*/
@Deprecated
void setSubtituteReturnValues(Map substituteReturnValues);
/**
* Add a method that should be intercepted and return another value (
* {@code returnObject}). The substitute return values is a key-value
* map where each key is a method that should be intercepted and each value
* is the new return value for that method when it's intercepted.
*
* @deprecated Use {@link #stubMethod(Method, Object)} instead.
*/
@Deprecated
void addSubtituteReturnValue(Method method, Object returnObject);
/**
* Set specific fields that should be suppressed upon invocation. Note that
* this overrides all previous configurations.
*/
void setFieldsSuppress(Field[] fields);
/**
* Add specific fields that should be suppressed upon invocation.
*/
void addFieldToSuppress(Field firstField, Field... additionalFields);
/**
* Add specific fields that should be suppressed upon invocation.
*/
void addFieldToSuppress(Field[] fields);
/**
* Set which field types that should be suppressed. Note that this overrides
* all previous configurations.
*/
void setFieldTypesToSuppress(String[] fieldTypes);
/**
* Add field types that should be suppressed.
*/
void addFieldTypesToSuppress(String firstType, String... additionalFieldTypes);
/**
* Add field types that should be suppressed.
*/
void addFieldTypesToSuppress(String[] fieldTypes);
/**
* @return Which methods that should be suppressed/stubbed (i.e. return a
* default value when invoked).
*/
Method[] getMethodsToSuppress();
/**
* Get all substitute return values and also returns an unmodifiable map of
* all method-object pairs the were initialized.
*/
Map getStubbedMethods();
/**
* Get all substitute return values and also returns an unmodifiable map of
* all method-object pairs the were initialized.
*
* @deprecated Use {@link #getStubbedMethods()} instead.
*/
@Deprecated
Map getSubstituteReturnValues();
/**
* @return Which fields should be suppressed (i.e. will be set to
* {@code null} or other default values).
*/
Field[] getFieldsToSuppress();
/**
* @return The fully-qualified names to the fields that should be
* suppressed.
*/
String[] getFieldTypesToSuppress();
}