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

时间:2018-10-24 08:16:51

标签: java mockito junit5

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

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

我要测试是否在create调用时返回MyObject的相等性。 如何使用mockito来做到这一点?

public MyClassTest {
    @Mock
    private MyClass myClassMock;

    @Test
    public void testCreate() {
        ???
    }

3 个答案:

答案 0 :(得分:1)

无需使用像Java这样的静态类型的语言进行测试。如果编译,它将始终创建MyObject的实例,因为这是返回类型声明的内容。

如果出于某种原因您确实想在运行时检查类型(可能是因为您要检查比此时类型系统所提供的条件更严格的条件),则可以使用instanceof关键字或{{1 }}

答案 1 :(得分:0)

尝试一下:

if (create() instanceof MyObject ) {
   // ...
}

答案 2 :(得分:0)

尽管没有必要测试这种行为,但您可以执行以下操作:

GoogleSignInAccount acct = result.getSignInAccount();

// credential
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
FirebaseAuth.getInstance().getCurrentUser().reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            Log.d(TAG, "User re-authenticated.");

                            //Now change your email address

                            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                            user.updateEmail("user@example.com")
                                    .addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {
                                            if (task.isSuccessful()) {
                                                Log.d(TAG, "User email address updated.");
                                            }
                                        }
                                    });

                        }
                    });

有关二手匹配器的更多信息:http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/CoreMatchers.html#instanceOf(java.lang.Class)