首页 > 解决方案 > 如何使注入的 Mocks 等于 Null?

问题描述

我有一个看起来像这样的类:

public class Foo {
    SomeObj dummy;
    ...
    public Bar makeBar(){
        if(dummy == null) {
            ...do stuff
        }
        return new Bar(dummy);
    }
}

我正在尝试对 if 语句的内容进行单元测试,以确保我的代码正在做它需要做的事情。

现在,我的单元测试看起来像这样:

public class FooTest {    
    @InjectMocks
    Foo foo;

    @Mock
    SomeObj dummy;

    @Before
    public void setUp() throws Exception
    {
        foo = new Foo();

        MockitoAnnotations.initMocks(this);
    }
    ...
    @Test
    public void testMakeBar()
    {
        when(dummy.equals(null)).thenReturn(true);
        ...
        foo.makeBar();
    }
}

当然,这不起作用,这就是我在这里的原因。简而言之,我如何模拟==操作员?

旁注:对不起,如果这是一个愚蠢的问题或一个简单的解决方案。当试图用谷歌搜索时,我得到了很多“注入的模拟是空的”,这实际上与我的问题相反。

标签: javaunit-testingjunitmockingmockito

解决方案


我怀疑你想多了。只需停止模拟dummy,或停止向 注入模拟Foo,您将获得一个Foo带有 a 的实例null dummy(因为它从未被初始化)。


推荐阅读