首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用MockRetrofit测试异步Retrofit2 API调用

无法使用MockRetrofit测试异步Retrofit2 API调用
EN

Stack Overflow用户
提问于 2017-09-13 05:39:54
回答 1查看 408关注 0票数 0

我正在尝试使用MockRetrofit测试retrofit2应用程序接口。我有以下服务API:

代码语言:javascript
复制
  interface AuthApi
  {
      public Call<Result> signin( String username, String pswd );
  }

Mock实现如下所示:

代码语言:javascript
复制
    public class MockAuthService implements AuthApi
    {
         BehaviorDelegate<AuthService> delegate;
         public MockAuthService( BehaviorDelegate<AuthService> d )
         {
             delegate = d;
         } 

         public Call<Result> signin( String username, String pswd )
         {
             return delegate.returningResponse( new Result() ).signin( usernam, pswd );

         }
    }

我的测试如下所示:

代码语言:javascript
复制
@Test
public void testSuccessfulLogin()
{
    // Create MockRetrofit object

    MockAuthService service = new MockAuthService( mockRetrofit.create(AuthService.class) );
    Call<Result> call = service.signin("user", "pswd" );
    call.execute(); //This works fine. I get the result obj and check status code and stuff
    call.enqueue(new Callback<Result>()  // This does not work
    {
        @Override
        public void onResponse( Call<Result> call, Response<SignInResult.Result> response )
        {
            System.out.println( "onResponse" ); // This is never called
        }

        @Override
        public void onFailure( Call<Result> call, Throwable throwable )
        {
            System.out.println( "onFailure" ); // this is never called
        }
    } );
}

单元测试的异步部分(call.enqueue())不起作用。回调(onResponse或onFailure)永远不会被调用。同步调用工作正常。知道为什么只有异步调用不起作用吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-14 00:26:30

问题是我没有等待后台线程调用回调方法。一旦我在调用enqueue之后放入一个Thread.sleep(1000),它就开始正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46185731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档