代码之家  ›  专栏  ›  技术社区  ›  lapots

检查方法是否返回相应类的实例

  •  1
  • lapots  · 技术社区  · 6 年前

    我有一个创建新对象的简单方法(实际上它创建了相当复杂的对象)

    class MyClass {
        public MyObject create() { return new MyObject(); }
    }
    

    我想测试一下 create 调用它返回不等于 MyObject . 如何使用 mockito ?

    public MyClassTest {
        @Mock
        private MyClass myClassMock;
    
        @Test
        public void testCreate() {
            ???
        }
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   OhleC    6 年前

    没有必要用Java之类的静态类型语言来测试它。如果它编译,它 始终创建的实例 MyObject ,因为这是返回类型声明的。

    如果出于任何原因,您希望在运行时检查类型(可能是因为您希望检查比类型系统在那时提供的条件更严格的条件),那么 instanceof 关键字,或 Class::isInstance()

        2
  •  0
  •   Jérôme Renard    6 年前

    试试这个:

    if (create() instanceof MyObject ) {
       // ...
    }
    
        3
  •  0
  •   Bas de Groot    6 年前

    虽然没有必要测试这种行为,但您可以这样做:

    import org.junit.Test;
    
    import static org.hamcrest.CoreMatchers.instanceOf;
    import static org.junit.Assert.assertThat;
    
    public MyClassTest {
    
        @Test
        public void testCreate() {
            MyClass myClass = new MyClass();
            assertThat(myClass.create(), instanceOf(MyObject.class));
        }
    }
    

    有关使用的匹配器的详细信息: http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/CoreMatchers.html#instanceOf(java.lang.Class)