Robolectric - how to mock com.actionbarsherlock.view.MenuItem?
actionbarsherlock, android, mocking, robolectric
Solution
So... becous there is no more elegant way to mock the `com.actionbarsherlock.view.MenuItem` I did this:
- Made my own class that implements `com.actionbarsherlock.view.MenuItem`
- Added a int field for itemId in my mock class.
- Other methods from the `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:)
Problem
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...