当模仿类作为依赖项传递时,

时间:2018-12-14 22:36:59

标签: android mockito

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

1 个答案:

答案 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()); 
    }
}