我收到此错误:
Wanted but not invoked:
view.showPlayerActivity(null);
Actually, there were zero interactions with this mock.
Run Code Online (Sandbox Code Playgroud)
我有这个代码:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Log.class)
public class MyDriverPresenterTest {
@Mock
private MyDriveRepository mydriveRepository;
private MyDrivePresenter drivePresenter;
private Drive drive;
private List<Drive> driveList;
@Before
public void setUpMyRecrdingsPresenter(){
PowerMockito.mockStatic(Log.class);
MockitoAnnotations.initMocks(this);
drivePresenter = new MyDrivePresenter();
drive = new Drive("Roar",false,1521708960,11);
driveList.add(drive);
}
@Test
public void testDriveClicked(){
Uri uri=mydriveRepository.
getMyDriveItemSelectedPathUri(drive.toFile().getName());
verify(view).showPlayerActivity(uri);
}
}
Run Code Online (Sandbox Code Playgroud)
MyDrivePresenter 类有方法
@Override
public void onDriveClicked(Drive drive) {
Uri uri = mydriveRepository.getMyDriveItemSelectedPathUri(drive.toFile().getName());
Log.i("TAG", "onRecordingClicked: "+uri);
view.showPlayerActivity(uri);
}
Run Code Online (Sandbox Code Playgroud)
和 MyDriveRepository 有方法
public Uri getMyDriveItemSelectedPathUri(String name){
Uri pathUri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
pathUri = FileProvider.getUriForFile(context,"com.mypackagename",new File(getUserMixDir(),name));
}else{
pathUri = Uri.parse("file://"+new File(getUserMixDir(),name));
}
return pathUri;
}
Run Code Online (Sandbox Code Playgroud)
mydriveRepository.getMyDriveItemSelectedPathUri 不断返回 null。我尝试查看以下链接/sf/ask/1438634851/?rq=1
,但无法真正找到解决我的问题的方法。
看起来您正在嘲笑您的存储库,因此您需要为演示者调用存储库方法时提供一种行为:
when(mydriveRepository.getMyDriveItemSelectedPathUri(anyString())).thenReturn(mockedUri);
Run Code Online (Sandbox Code Playgroud)
所以你的测试将如下所示:
@Mock
MyDriveRepository mydriveRepository;
@Mock
Uri mockedUri;
@Test
public void testDriveClicked() {
String filePath = "aPAth";
presenter.onDriveClicked(drive);
Uri uri = mydriveRepository.getMyDriveItemSelectedPathUri(filePath);
verify(view).showPlayerActivity(uri);
}
Run Code Online (Sandbox Code Playgroud)
所以基本上在这里您将测试演示者是否使用伪生成的 URI 调用该视图方法。当演示者调用存储库上的 getMyDriveItemSelectedPathUri 方法时,您告诉框架 (mockito) 返回模拟的 URI。然后,当您测试视图中的方法是否由演示者调用时,真正的测试就来了。
归档时间: |
|
查看次数: |
13743 次 |
最近记录: |