我想拥有一个单一的返回类型,或者是null,一个空的,也许是空的。
首先,我称之为获得布尔值的方法:
Single<Boolean> isRemembered()
然后,如果此方法返回true,请调用此方法:
Single<String> getRemembered()
如果,isRemembed((返回true,getRemembered((永远不是零值。
这是我在流中的尝试:
public Maybe<String> getRememberIfExists(){
return sharedPreferencesRepositoryType.isRemembered()
.flatMapMaybe(aBoolean -> {
if(aBoolean){
return sharedPreferencesRepositoryType.getRemembered()
.flatMapMaybe(Maybe::just);
}else{
return Maybe.empty();
}
});
}
我在Isremembered((返回True and false时都为两者写了一个测试:
@Test
public void getRememberIfExists() {
when(repository.getRemembered()).thenReturn(Single.just(REMEMBERED));
when(repository.isRemembered()).thenReturn(Single.just(true));
TestObserver<String> observer = interactor.getRememberIfExists()
.test();
verify(repository).isRemembered();
verify(repository).getRemembered();
observer.assertNoErrors()
.assertComplete()
.assertValueCount(1);
assertEquals(REMEMBERED, observer.values().get(0));
}
@Test
public void getRememberIfExistsError(){
when(repository.isRemembered()).thenReturn(Single.just(false));
TestObserver<String> testObserver = interactor.getRememberIfExists()
.test();
verify(repository).isRemembered();
testObserver.assertComplete();
testObserver.assertEmpty();
}
第一个测试成功。第二个失败:
java.lang.AssertionError: Completed! (latch = 0, values = 0, errors = 0, completions = 1)
at:
testObserver.assertEmpty()
关于如何正确编写我的getRememberifexists((方法的任何建议?
根据参考文档, ASSEMTEMTY
返回一个(单身人士(可能会立即调用oncomplete的实例。
因此,请使用" assertnovalues",而不是" Aspertementy":
@Test
public void getRememberIfExistsError(){
when(repository.isRemembered()).thenReturn(Single.just(false));
TestObserver<String> testObserver = interactor.getRememberIfExists()
.test();
verify(repository).isRemembered();
testObserver.assertComplete();
testObserver.assertNoValues()
}