Reputation: 4380
I'm trying to write tests with Robolectric for an App that uses SherlockActionBar.
I need to test if the applications does the right thing if an MenuItem
is selected, but the Robolectric lib gives only mocks for android.view.MenuItem
while the app uses the method onOptionItemSelected(com.actiombarsherlock.view.MenuItem)
.
So my questions are:
May be there is a potability to mock the com.actionbarsherlock.view.MenuItem
?
Or a workaround or something?
Thanks in advance...
Upvotes: 3
Views: 693
Reputation: 4380
So... becous there is no more elegant way to mock the com.actionbarsherlock.view.MenuItem
I did this:
com.actionbarsherlock.view.MenuItem
MenuItem
interface are left blank (may be I'll use them in other tests)As a result i got this kind of test:
com.actionbarsherlock.view.MenuItem item = new TestSherlockMenuItem(R.id.some_action);
activity.onOptionsItemSelected(item);
ShadowActivity shadowActivity = Robolectric.shadowOf(activity);
Intent startedIntent = shadowActivity.getNextStartedActivity();
assertNotNull(startedIntent);
ShadowIntent shadowIntent = Robolectric.shadowOf(startedIntent);
assertThat(shadowIntent.getComponent().getClassName(),
equalTo(NextActivity.class.getName()));
By the way, thanks to Eugen Martynov for trying to understand my problem:)
Upvotes: 5