实际说明情况有些困难。我模拟了一个类,并将其传递给另一个类的构造函数。然后,我创建第一个类并在第二个类的方法下调用第一个类的方法,它返回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,然后回答和间谍变种,但是没有运气。可能我错过了一些东西,但找不到。如果有人有任何想法,我将非常感谢。谢谢。
答案 0 :(得分:0)
在这里
@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());
}
}