Я играю с реализацией своих собственных наблюдаемых или переносом их с других языков для удовольствия и прибыли.Как тестировать не-RxJava наблюдаемые или асинхронные коды вообще?
Проблема, с которой я столкнулся, заключается в том, что очень мало информации о том, как правильно тестировать наблюдаемые или асинхронные коды в целом.
Рассмотрим следующий код теста:
// Create a stream of values emitted every 100 milliseconds
// `interval` uses Timer internally
final Stream<Number> stream =
Streams.interval(100).map(number -> number.intValue() * 10);
ArrayList<Number> expected = new ArrayList<>();
expected.add(0);
expected.add(10);
expected.add(20);
IObserver<Number> observer = new IObserver<Number>() {
public void next(Number x) {
assertEquals(x, expected.get(0));
expected.remove(0);
if(expected.size() == 0) {
stream.unsubscribe(this);
}
}
public void error(Exception e) {}
public void complete() {}
};
stream.subscribe(observer);
Как только поток подписка, он излучает первое значение. onNext
называется ... И тогда тест успешно завершается.
В JavaScript большинство тестовых фреймворков в настоящее время предоставляют необязательное обещание для тестового примера, что вы можете асинхронно вызывать на успех/сбой. Есть ли что-то подобное для Java?
Проблема заключается в том, что 'TestSubscriber' ожидает RxJava-совместимый' Observer' который я не мог иметь :( – Mamut
Проверьте апи, There'sa подрядчика TestSubscriber, который не требует Observable;), так что это просто как ожидание – paul
Спасибо! Оно работает :) – Mamut