У меня есть BroadcastReceiver
, который запускает IntentService
:
@Override
public void onReceive(Context context, Intent intent) {
ParamsRequest paramsRequest = new ParamsRequest.Builder()
.setUrl(intent.getStringExtra("url"))
.build();
Intent serviceIntent = new Intent(context, MyIntentService.class);
serviceIntent.putExtra("paramsKey", paramsRequest);
context.startService(serviceIntent);
}
И MyIntentService
получает Intent
(с объектом paramsRequest
):
@Override
protected void onHandleIntent(Intent intent) {
ParamsRequest paramsRequest = (ParamsRequest) intent.getSerializableExtra("paramsKey");
//more code
}
У меня есть тест, чтобы убедиться, что намерение отправлено и получено правильно:
@Test
public void testStartAndroidProofService() {
Intent intent = new Intent(context, AndroidProofService.class);
intent.putExtra("paramsKey", paramsRequest);
receiver.onReceive(context, intent);
assertNull(receiver.getResultData());
ArgumentCaptor<Intent> argumentIntent = ArgumentCaptor.forClass(Intent.class);
Mockito.verify(context, times(1)).startService(argumentIntent.capture());
assertEquals(paramsRequest, argumentIntent.getValue().getSerializableExtra("paramsKey"));
}
Но AssertEquals
не удается:
Есть идеи, почему у меня 2 разных объекта?
РЕДАКТИРОВАТЬ: Intent
, захваченный в argumentIntent.capture()
, содержит объект ParamsRequest
, но все поля в этомобъект null
.