实际解释情况有点困难。我嘲笑一个类并将其传递给另一个类的构造函数。然后,我创建第一个类并在第二个类的方法下调用第一个类的方法,它返回null。请检查以下内容:
class A {
public String getName() {
return "Something";
}
}
class B {
private A a;
public B(A insA) {
this.a = insA;
}
public String createName() {
return a.getName(); // when this is called, returns null.
}
}
class TestB {
public testBSomething() {
A mockA = mock(A.class);
when(mockA.getName()).thenReturn("Somevalue");
B insB = new B(mockA);
assertEqual("SomeValue", insB.createName()); // insB.createName() = null which should return "Somevalue"
}
}
我也试过doReturn,然后是答案和间谍变种,但没有运气。可能,我想念一些东西,但我找不到。如果有人有任何想法,我会非常感激。谢谢。
这里,
@RunWith(MockitoJUnitRunner.class)
public class TestB {
@Mock
A mockA;
@InjectMocks
B insB;
@Before
public void setup() {
insB = new B(mockA);
}
@Test
public void testBSomething() {
when(mockA.getName()).thenReturn("SomeValue");
Assert.assertEquals("SomeValue", insB.createName());
}
}