Completable
は、例えば、私のテストでに加入されている場合、私はトラブルの識別を持っている:私のテストで(RxJava2)
interface IWebApi {
Observable<Data> download();
}
interface IDataRepository {
Completable insert(Data data);
}
class SyncService {
IWebApi webApi;
IDataRepository repository;
public SyncService(IWebApi webApi, IDataRepository repository) {
this.webApi = webApi;
this.repository = repository;
}
public Completable sync() {
return webApi.download()
.flatMapCompletable((Data data) -> { repository.insert(data) })
}
}
そしてを:
このテストに合格します。しかし、私はこのようflatMapCompletable
を使用せずに同期する方法を書き換えるでした:
public Completable sync() {
return webApi.download()
.doOnNext((Data data) -> { repository.insert(data) })
.ignoreElements();
}
をそれから私のテストに合格だろうが、コードは動作しませんでも私はinsertメソッドと呼ばれてきたと思ったので、私はそれにsubscribe()
と呼ばれていませんでした。
どうすればよいですか?
私は私が知っているのが大好きだベストプラクティスを使用していないので、もし私がRxJavaに新しいですPS :)
更新
はマキシムOstrovidov
によって指さ.ingnoreElements()
を呼び出していないの間違いを修正しました
'flatMapCompletable'には何も問題はありませんでした。方法。 – akarnokd
@akarnokdええ、私はそれが実際にはるかに好ましいと思うが、誰かが何らかの理由で観察可能なものを購読していない方法の1つに変更した場合、テストは失敗するはずだと私は信じています –