2012-02-16 7 views
1

-あるとして、姓Powermock - TestCase1</p> <p>を実行するために、私は姓のためにセットされますと、Personクラスを持っている具体的な方法を模擬し、オブジェクトの残りの部分を残す方法

A TestClassを、私たちだけですることしかできません特定のメソッド(getLastName)をモックし、他のすべてのものを残す(他の内部フィールド、関数...そのまま)?あなたが方法(民間含む)個々のモックためにスパイを使用することができます

public class Person { 
    private String firstName; 
    private String lastName; 

     public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
} 

import static org.powermock.api.easymock.PowerMock.*; 
import static org.easymock.EasyMock.expect; 

@RunWith(PowerMockRunner.class) 
@PrepareForTest ({Person.class}) 
public class TestClass { 

    @Test 
    public void TestCase1() { 
     Person person = createNiceMock(Person.class); 
     person.setFirstName = "First name"; 

     expect(person.getLastName()).andReturn("Fixed value").anyTimes(); 

     replayAll(); 

     String ln = person.getLastName(); //will return "Fixed value"; 

     String fn = person.getFirstName(); 
     // Currently it returns null because of createNiceMock 
     // but I want it to return "First name" (value has been set to mock object) 
     // Is it possible? 

     verifyAll(); 
    } 
} 
+1

を、スパイは、このために最適なソリューションです。しかし、スパイは特定の理由で控えめに使用する必要があります。詳細はこちらスパイ/部分的な嘲笑の落とし穴については、http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#16を参照してください。 – Bala

答えて

3

:ディランで述べたように

Person classUnderTest = PowerMockito.spy(new Person()); 

    // use PowerMockito to set up your expectation 
    PowerMockito.doReturn("Fixed value").when(classUnderTest, "getLastName"); 
関連する問題