我有两个班级:
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();
}
}
最后我有一个模拟Foo的测试类:
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);
}
}
你能告诉我,为什么我从t.get()获得10分,尽管在模拟"我说"我想要5个?
我如何写Mock来获得嘲弄的价值?
提前致谢。
答案 0 :(得分:1)
您忘记通过调用t.setTestClass(test);
设置您的模拟。
答案 1 :(得分: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
课程中使用它。因此,如果您调用return方法,它将不会发送您尝试模拟的结果