2012-09-29 6 views
0

`에 대한 일치하지 :robolectric, 아니 의도는 내 코드를 참조하십시오 receiveResult`

doSomeActionWillStartNewIntentToSelectImage(); 

// check started intent 
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
Assert.assertThat(activity, new StartedMatcher(intent)); 

// simulate the returning result 
shadowOf(activity).receiveResult(
     new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI), 
     Activity.RESULT_OK, 
     new Intent().setData(activity.drawableId2Uri(R.drawable.icon_ok))); 

를하지만 오류를보고 :

java.lang.RuntimeException: No intent matches 
    Intent{action=android.intent.action.PICK, data=content://media/internal/images/media} among 
    [Intent{action=android.intent.action.PICK, data=content://media/internal/images/media}] 
at com.xtremelabs.robolectric.shadows.ShadowActivity.receiveResult(ShadowActivity.java:381) 

그것은 Intent{action=android.intent.action.PICK, data=content://media/internal/images/media} 정확히 나중에 것과 동일하다는 것을 이상하다.

어디서 잘못 되었습니까?

답변

5

receiveResult에 전달 된 의도는 활동에서 시작한 의도와 같지 않습니다.

올바른 테스트 코드가 있어야한다 :

doSomeActionWillStartNewIntentToSelectImage(); 

// check started intent 
Intent intent = shadowOf(activity).getNextStartedActivity(); 
assertThat(intent.getAction()).isEqualTo(Intent.ACTION_PICK); 
assertThat(intent.getData()).isEqualTo(MediaStore.Images.Media.INTERNAL_CONTENT_URI); 

// simulate the returning result 
shadowOf(activity).receiveResult(
     intent, 
     Activity.RESULT_OK, 
     new Intent().setData(activity.drawableId2Uri(R.drawable.icon_ok))); 
관련 문제