/*
*
* * Copyright 2010, Unitils.org
* *
* * 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.unitils.mock.core;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.*;
/**
* Tests the mock object functionality for partial mocks that wrap around an existing instance.
*
* @author Tim Ducheyne
* @author Filip Neven
*/
public class PartialMockObjectStubTest {
/* Class under test */
private PartialMockObject<TestClass> mockObject;
@Before
public void setUp() {
mockObject = new PartialMockObject<TestClass>(TestClass.class, this);
TestClass.invoked = false;
}
@Test
public void stubMethod() {
mockObject.stub().method();
mockObject.getMock().method();
assertFalse(TestClass.invoked);
mockObject.assertInvoked().method();
}
@Test
public void stubReturnsDefaultValue() {
mockObject.stub().methodWithReturnValue();
List<String> result = mockObject.getMock().methodWithReturnValue();
assertNotNull(result);
assertTrue(result.isEmpty());
assertFalse(TestClass.invoked);
mockObject.assertInvoked().methodWithReturnValue();
}
@Test
public void stubMethodCalledFromOtherMethod() {
mockObject.stub().method();
mockObject.getMock().methodThatCallsOtherMethod();
assertFalse(TestClass.invoked);
mockObject.assertInvoked().method();
mockObject.assertInvoked().methodThatCallsOtherMethod();
}
public static class TestClass {
public static boolean invoked;
public void methodThatCallsOtherMethod() {
method();
}
protected void method() {
invoked = true;
}
protected List<String> methodWithReturnValue() {
invoked = true;
return null;
}
}
}