2017-02-21 53 views
0

我有兩個類:嘲笑值不退還

public class Foo { 
    public int getInt(){ 
     return 10; 
    } 
} 

public class Bar { 
    Foo testClass = new Foo(); 

    public Foo getTestClass() { 
     return testClass; 
    } 

    public void setTestClass(Foo testClass) { 
     this.testClass = testClass; 
    } 

    public int get(){ 
     return testClass.getInt(); 
    } 
} 

最後,我有測試類模擬爲富:

​​

你能告訴我,爲什麼我從得到10 t.get()雖然在模擬「我說」,我想要5?

我該如何寫Mock來獲得嘲諷價值?

在此先感謝。

+0

看來你的模擬沒有設置。 – Mistalis

回答

1

你忘了實際上你的模擬電話t.setTestClass(test);

+0

如果方法setTestClass將被保護怎麼辦?現在我不能使用t.setTestClass – Cwaniak

+0

然後你可以改變你的構造函數從那裏注入模擬,或者你可以通過反射使得setter可用。 – QBrute

0

當你寫:

public class TestClass { 

    Foo test; 

    @Before 
    public void init(){ 
     test = Mockito.mock(Foo.class); 
     Mockito.when(test.getInt()).thenReturn(5); 
    } 

    @Test 
    public void tst(){ 
     Bar t = new Bar(); 
     Assert.assertEquals(t.get(), 5); 
    } 
} 

你嘲笑你Foo類,但不是在Bar類使用它。所以,如果你打電話給退貨方法,它不會發送你試圖模擬的結果